19

我想问如何为我在javascript中通过appendChild创建的元素添加一个类

document.forms[0].appendChild(document.createElement("input"));

如何为我创建的输入元素添加一个类?

我只使用 Javascript,我不喜欢 jQuery,请用纯 javascript 发送答案。

4

4 回答 4

50

我想问如何为我在javascript中通过appendChild创建的元素添加一个类

像任何其他元素一样,您有参考。不管是通过 JS 在 JS 中创建createElement,还是以其他方式获得对节点的引用。假设input包含对您的节点的引用:

var input = document.createElement("input");

您可以使用className

input.className = "foo";

类列表

input.classList.add("foo");

设置属性

input.setAttribute("class", "foo");

第一个被任何浏览器广泛支持,所以我强烈建议你使用一个,除非你不在现代浏览器中并且你想操作你设置的每个类,这样classList会更有用。我强烈避免使用后者,因为setAttribute您将设置 HTML 的属性而不是 JS 对象的类名:然后浏览器将该值映射到 JS 的属性,但在某些情况下它会失败(例如,参见IE 的某些版本),因此即使 HTML 节点具有该属性,也不会应用该类。

请注意,尽管如何获得HTML节点引用,上述所有方法都可以正常工作,因此也可以使用:

var input = document.getElementById("my-input");

等等。

在您的情况下,因为appendChild返回对附加节点的引用,您也可以在一个语句中编写所有内容:

document.forms[0]
    .appendChild(document.createElement("input"))
    .className = "foo";

希望能帮助到你。

于 2012-09-25T07:19:14.517 回答
9

您需要创建元素的变量。

var input = document.createElement("input");
input.className = 'class_to_add';
document.forms[0].appendChild(input);

更新:

.appendChild返回孩子,所以你也可以在没有变量的情况下做到这一点:

document.forms[0].appendChild(document.createElement("input")).className = "class_to_add";
于 2012-09-25T07:06:02.520 回答
1

使用 setAttribute 和 getAttribute 方法:

var i = document.createElement('input'); 
i.setAttribute('class', 'myclass');
document.forms[0].appendChild(i);
于 2012-09-25T07:07:57.410 回答
1

喜欢:

document.forms[0].appendChild(document.createElement("input")).className = "class_to_add";
于 2012-09-25T07:11:05.400 回答