【发布时间】:2015-04-10 00:33:14
【问题描述】:
我知道他们说 innerHTML 不安全并且可能很慢,尽管它现在是 HTML5 的一部分。另一方面,使用 DOM 可能很冗长。
如果使用例如值呢?按钮的值?
function changeit (valueff, idP){
var change_item = prompt("Change this item",valueff);
if (change_item)
{
document.getElementById(idP).value = change_item;
}
...
这是使用 Codeigniter 制作的餐厅菜单。所以函数接收一个按钮的值,它的id,然后根据管理员的输入改变值。然后它对数据库进行 ajax 调用并更改相关条目。我当然计划清理输入。
那么上面的方法比使用 textarea 和 innerHTML 更好吗?:
document.getElementById(idP).innerHTML = change_item;
要更改的值可以是菜单中的一行,例如Espresso 2.50 美元,我用按钮也没关系,只要管理员可以点击它并更改实际菜单中的值即可。
<input id="list_5" type="button" value="Espresso $2.50" onclick="changeit(this.value,this.id);">
编辑:
如果你用谷歌搜索为什么 innerHTML 不好 - 你会得到很多结果,例如(例如这个关于 SO 的答案)[Why is "element.innerHTML+=" bad code?
【问题讨论】:
-
innerHTML 一点也不慢。 jQuery 大量使用它来设置/获取元素内容。 “值 vs. innerHTML”?从逻辑上讲,这取决于您是要更改值 还是 元素的 HTML。
-
很多人说innerHTML不安全
-
我从未读过一篇严肃的文章说为什么
innerHTMLis/*should* is unsafe. -
我想我的问题还不清楚。是 getElementById(idP).value = change_item;优于 getElementById(idP).innerHTML = change_item; ?在这两种情况下,我都会更改元素的文本,只是两种不同的方法,因为许多人说 innerHTML 不安全。
-
您不能使用
element.value = "blah"更改 DIV 元素的文本。value仅适用于表单操作元素。
标签: javascript html codeigniter innerhtml