老师,我有疑惑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" > < title >节点练习</ title > </ head > < body > < div id = "wrap" > < ul id = "list" > < li >第一个li</ li > < li >第二个li</ li > < li >第三个li</ li > </ ul > </ div > < script > //在此处补充代码 var div=document.getElementById("wrap"); var ul=div.firstChild; var newUl=document.createElement("ul"); for(var i=0;i< 4 ;i++){ var newLi = document .createElement("li"); var newText = document .createTextNode("第"+(i+1)+"天学习前端"); newLi.appendChild(newText); newUl.appendChild(newLi); } wrap.replaceChild(newUl,list); </script> </ body > </ html > |
这样写可以吗
好像可以实现替换的目的但是他给我报错
Failed to load resource: net::ERR_FILE_NOT_FOUND
还有之前我是这么写的,为什么这样实现不了效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <!DOCTYPE html> < html lang = "en" > < head > < meta charset = "UTF-8" > < title >节点练习</ title > </ head > < body > < div id = "wrap" > < ul id = "list" > < li >第一个li</ li > < li >第二个li</ li > < li >第三个li</ li > </ ul > </ div > < script > //在此处补充代码 var div=document.getElementById("wrap"); var ul=div.firstChild; var newUl=document.createElement("ul"); for(var i=0;i< 4 ;i++){ var newLi = document .createElement("li"); var newText = document .createTextNode("第"+(i+1)+"天学习前端"); newLi.appendChild(newText); newUl.appendChild(newLi); } div.replaceChild(newUl,ul); </script> </ body > </ html > |
5
收起
正在回答
1回答
同学你好,
粘贴的第一段s代码, 老师这边测试,代码正确,不会出现同学说的Failed to load的错误
第二段代码没有实现效果,是因为子节点并不一定都是元素节点,还有可能包含文本节点或者注释节点等节点, 空格或者换行被看做文本节点。 所以div.firstChild获取的是div下的第一个子元素是换行(文本节点),导致无法实现效果。可
以打印查看div下的子节点又有哪些内容
打印结果
建议修改:同学可以直接第一种方式先获取ul列表, 然后在实现替换的功能哦
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧