在Javascript中创建和更改HTML元素
Create and change HTML elements in Javascript
我有一个这样的HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<div id='first'>
<div id='second'>
<div id='third'>
</div>
</div>
</div>
</body>
</html>
我还有一些类似的Javascript代码:
var element = document.createElement('div');
element.id = 'forth';
var parent = document.getElementById('third');
parent.appendChild(element);
当我运行javascript代码时,HTML应该更改为:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<div id='first'>
<div id='second'>
<div id='third'>
<div id='forth'></div>
</div>
</div>
</div>
</body>
</html>
然后,在我在浏览器控制台中键入以下行后:
element.className = 'test';
我希望只有Javascript中的变量"element"会更改,并具有类名"test"。然而,当我检查我当前的HTML时,它也有类名"test":
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<div id='first'>
<div id='second'>
<div id='third'>
<div id='forth' class='test'></div>
</div>
</div>
</div>
</body>
</html>
有人能解释一下吗?非常感谢!!
当您像这样为变量"element"赋值时:
var element = document.createElement('div');
"element"成为指向新创建的div的指针。每次引用"element"变量时,实际上都引用了"element"所指向的"div"对象。因此,当您这样做时:
element.className = 'test';
您将类名分配给div,而不是某个抽象变量。由于您已将div附加到HTMLDOM:
parent.appendChild(element);
您可以立即看到html代码中的更改。
但是,如果您为"元素"变量分配了一个新值,如下图所示:
element = document.createElement('p');
变量'element'将停止指向div对象,并开始指向新创建的p对象。从这一点开始,应用于"element"的所有方法都会影响"p"对象。
DOM中的元素除了可能具有className
属性之外,没有其他意义上的类,无论是从JavaScript赋值还是从HTML标记中的class
属性。当您在浏览器中查看"您的HTML"时,它实际上将DOM显示为线性化为HTML标记。这特别意味着,如果元素节点具有属性className
,则该元素显示为具有class
属性。这在HTML5CR中的class
属性描述中得到了有效描述。这意味着设置className
属性(HTML5中的"IDL属性")也会设置class
属性("内容属性")。
className属性引用HTML元素的class属性。
- 如何设置html元素填充的动画
- 删除对HTML元素的拖动
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 一个html元素的克隆次数太多
- 使用AngularJS Directive WHITOUT$scope创建一个动态html元素
- 为什么我在Internet Explorer上看不到html元素
- 重新排列HTML元素的顺序并更改内容
- 使用.on动态添加jquery/js不知道的html元素
- 如果类不是一个选项,如何在使用 jQuery 时控制(避免)嵌套 html 元素的样式
- 如何将html元素添加到tampermonkey中
- 访问html元素值javascript
- 如何在HTML元素上创建函数,而不是将元素作为参数传递
- 自定义HTML元素属性未显示-Web组件
- 让HTML元素充当停止滚动的锚点
- 将html元素插入到文本字符串中,以匹配另一个html字符串
- 替换HTML元素中的字符
- 如何将html元素添加为生成的内容
- 如何使用JavaScript在没有html dom的情况下隐藏html元素
- 使用JS加载HTML元素