如何检查作为函数参数输入的字符串是否为HTML标记名之一?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (96)

我正在处理一个可以使用的构造函数,如以下代码中所示的代码注释所示:

//CONSTRUCTOR
//creates a child element of the specified kind
//adds the child to specified parent
//optionally assigns the child an ID
// optionally assigns the child up to 4 classes

function Adjoin(childKind = undefined, childID = undefined, firstChildClass = undefined, secondChildClass = undefined, thirdChildClass = undefined, fourthChildClass = undefined) {
  if (!(this instanceof Adjoin)) {
    return new Adjoin(childKind = undefined, childID = undefined, firstChildClass = undefined, secondChildClass = undefined, thirdChildClass = undefined, fourthChildClass = undefined);
  }
  this.childKind = childKind;
  this.childID = childID;
  this.firstChildClass = firstChildClass;
  this.secondChildClass = secondChildClass;
  this.thirdChildClass = thirdChildClass;
  this.addChildTo = function(parentID) {

    const parent = document.getElementById(parentID);
    const child = document.createElement(childKind);

    parent.appendChild(child);

    if (childID !== undefined) {
      child.setAttribute("id", childID);
    }

    if (firstChildClass !== undefined) {
      child.classList.add(firstChildClass);
    }

    if (secondChildClass !== undefined) {
      child.classList.add(secondChildClass);
    }

    if (thirdChildClass !== undefined) {
      child.classList.add(thirdChildClass);
    }

    if (fourthChildClass !== undefined) {
      child.classList.add(fourthChildClass);
    }
  }
};

如果我在某个地方输入这样的代码,这是可行的:

new Adjoin("div", "foo_id", "foo_class").addChildTo("some_parent")

这也很好:

new Adjoin("div").addChildTo("some_parent")

我所坚持的是检查第一个参数是否是HTML标记名之一的一种方法。例如,如果代码输入如下,会抛出一个错误:

new Adjoin("not_an_html_element", "foo_id", "foo_class").addChildTo("manchoo_parent")

提前谢谢!

提问于
用户回答回答于

错误不会抛出,因为即使你创建的元素不是有效的HTML标记,它仍然会创建该元素,但它将是一个HTMLUnKnownElement。

所以为什么<daveyjones></daveyjones>还在显示。

要解决你的问题,你应该有一个函数来验证你正在接收的输入是否是一个有效的HTML标记

用户回答回答于

你可以使用Array.indexOf()创建一个HTML标记数组,并检查函数中正在创建的元素是否存在于这个数组中。

扫码关注云+社区

领取腾讯云代金券