一直有个疑惑存在心里,js操作html中的元素的原理是怎样的,打个比方,一个div中有一个四行四列的table,现要替换第二列和第四列的数据,我的理解后台语言操作html时,无论是以何种方式,应该都是将这个div读到内存中保存成字符串,然后进行字符串替换,将最终的字符串返回,那在前台通过js操作呢?
现假定已有八个现成的数据,只需js替换到table中
问题:
1.js也是将整个html页面读成字符串(如果是,从哪读?内存?浏览器缓存?还是硬盘上的缓存区?或是其他的?),然后进行字符串的拼接替换吗?
2.①用js找到相应的td标签(有八个也就是一半的单元格需要赋值),然后将其值赋为给定的数据;
②直接在js文件中全新拼接整个table对应的字符串,给定的数据也一起拼接进去,然后将其整体赋给div的innerHTML;
这两种方式哪种更优(效率和内存损耗等方面)?
3.能给我讲讲js操作html的原理就更好了(和问题相关的帖子的链接地址也可);
希望各位大牛多多指点解惑,小子感激不敬!
5 回答

一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
我是这么理解的:
浏览器在构造页面的时候,本身就是需要对html进行解析,构造出来一个所谓的DOM树,这是内存中的一个数据结构。这也就是为什么我们打开一个网页需要占用一些内容的原因。
浏览器都有一个javascript引擎,这个引擎可以对之前构造出来的DOM树进行访问或者修改。这个是很自然的。到了javascript这个级别,已经不再有html的概念,它是面对一个一个的对象(在DOM树上,我们称为节点)进行操作。

墨色风雨
TA贡献1853条经验 获得超6个赞
我遇到过这样一种情况,就是对一个div中的蛮多不同标签里的数据做动态实时更新(暂假定每100毫秒更新一次,如果只更新一次或几次可能性能上不会有太大区别),如果每次都精确的找到对应的标签,然后赋值,感觉蛮麻烦,而且就如上面的table,并不是每个单元格都要更新,而且还可能有其他非table标签,感觉查找起来比较麻烦,还不如一次全部替换掉来得直接,但就是不清楚优缺点怎样?
添加回答
举报
0/150
提交
取消