javascript - 在 Javascript 中创建和更改 HTML 元素

标签 javascript html

我有这样一个 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>

谁能解释一下?非常感谢!!

最佳答案

当您像您一样为变量“元素”赋值时:

var element = document.createElement('div');

'element' 成为指向新创建的 div 的指针。每次引用“元素”变量时,实际上是在引用“元素”指向的“div”对象。所以当你这样做时:

element.className = 'test';

您将类名分配给您的 div,而不是某个抽象变量。由于您已将 div 附加到 HTML DOM:

parent.appendChild(element);

您可以立即在您的 html 代码中看到更改。

但是,如果您为“元素”变量分配了一个新值,如下所示:

element = document.createElement('p');

变量“element”将停止指向 div 对象并开始指向新创建的 p 对象。从这一点开始,所有应用于“元素”的方法都会影响“p”对象。

关于javascript - 在 Javascript 中创建和更改 HTML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25963471/

相关文章:

jquery - 固定表格列宽(使用 colgroup)在 IE 和 Safari 中删除列后不起作用

html - Elm中段落的宽度

html - 100% 宽度的 div,带有显示水平滚动条的填充

javascript - 类似 Angular 的 Javascript 服务依赖注入(inject)

javascript - 如何选择 .getPropertyValue 返回的单位 ("text-size") ; JS查询

javascript - 如何使用javascript从文本框中获取文本

javascript - 为什么 Redux 存储中的这个变量不在 React 页面的 `this.props` 中?

javascript - 如何从 jQuery 中的附加元素发送 AJAX 请求

php - 点击特定按钮后,访客 IP 被禁止 24 小时

jquery - 元素的动画背景颜色(显示 block )