如果人们建议我不应该使用.innerHTML,那么我应该使用什么?

时间:2011-09-19 20:05:25

标签: javascript

  

可能重复:
  JavaScript: Is it better to use innerHTML or (lots of) createElement calls to add a complex div structure?

我应该使用什么而不是.innerHTML?所有建议都表示赞赏。

6 个答案:

答案 0 :(得分:16)

正确答案是在某些情况下你应该使用innerHTML,在其他情况下你应该使用appendChild。这是什么时候使用innerHTML或appendChild:

  • 在HTML标记内设置文本时使用innerHTML,如锚标记,段落标记,范围,div或textarea。

  • 使用appendChild()如果您尝试在另一个DOM中添加新的DOM元素 元件。

答案 1 :(得分:3)

答案 2 :(得分:3)

没有任何背景,只有一条规则:没有规则。

编程中没有任何情况盲目地遵循某些“规则”,无论背景如何。如果innerHTML本质上是eval,我的意思是邪恶,它不会在语言规范中开始!

使用innerHTML的替代方法取决于您要执行的操作,您拥有的JavaScript库(如果有)以及您要定位的浏览器(如果有)。

当您创建新的HTML部分时,您可以使用document.createElementdocs)制作每个元素,使用appendChild等来相互添加元素。如果您要将元素的文本从“蓝色”更改为“红色”,则可以使用innerHTML来完成该操作(假设您不使用任何流行的JavaScript框架)。

答案 3 :(得分:1)

实用时,最好自己创建DOM对象并将它们添加到DOM树中 - 性能会更好。对于复杂元素,最好使用innerHTML,否则您将拥有无法维护的代码。

答案 4 :(得分:0)

就像the answer here一样,“使用API​​”。 jQuery在这方面比你更好,而且非常容易使用,所以只需使用它。

看起来没有人想点击,所以我会引用答案。

  

都不是。使用jQuery,Prototype,Dojo或mooTools等库   因为这两种方法都充满了麻烦:

           

主要javascript库的编写者有   花了很多时间,并有完整的错误跟踪系统,以确保   当你调用他们的DOM修改工具时,他们实际上工作。

     

如果您正在编写图书馆以与上述工具竞争(并且很好   如果你是幸运的话,那么我会选择基于的方法   性能和innerHTML在过去和以后一直都是胜利的   innerHTML是一种原生方法,可以肯定它仍然是   最快的。

这里的关键点是,正确完成DOM操作是一项非常复杂的任务,可以让人强烈地使用库来抽象出你可能遇到的麻烦。

答案 5 :(得分:-1)

您应该在AJAX请求之间交换对象(JSON或XML)而不是纯HTML。然后,您需要在客户端上使用表示逻辑来处理数据(JSON或XML)并相应地更新DOM。