javascript - 文本区域的下一个兄弟有什么问题?

标签 javascript html dom innerhtml

当这个脚本插入到 HTML 文档中时,它会导致奇怪的行为。显示的 textarea 元素在 <br> 之后丢失其值。标签插入(我已经在 Chrome 42 中测试过):

var text = document.createElement("textarea");
document.body.appendChild(text);
text.value = "text";
alert("value presents");
document.body.innerHTML += "<br>"; //(*)
alert("value absents");

这是什么原因?

最佳答案

innerHTML属性是一把大锤。

调用document.body.innerHTML += '<br>'您所做的就是从 <body> 中删除每个元素并将它们替换为碰巧共享相同结构的全新元素。

value属性设置为原始 <textarea>但全新的从未有过value属性集。

如果您只想附加 <br>元素,创建一个并通过 DOM api 附加它:

var br = document.createElement('br');
document.body.appendChild(br);

关于javascript - 文本区域的下一个兄弟有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30142147/

相关文章:

javascript - 如何在 JavaScript 中交换 DOM 子节点?

javascript - 从 Javascript Image() 元素构造函数获取图像属性

javascript - 如何防止网站后台加载滞后?

javascript - 如何以 Angular 装饰类中的组件?

javascript - Raphael JS中拖动矩形来回弹跳

javascript - 如何在 CoffeeKup 模板中使用文字 HTML?

javascript - Tumblr 帖子在两种不同颜色之间循环

html - "pre"填充最小宽度的字符,调整大小时自动换行

Javascript:在没有 JQuery 的情况下使用单选按钮更改样式?

php - 如何使用 PHP Simple HTML DOM Parser 在 HTML 文件中找到最后一个 <div class>?