在script 標簽內補充代碼,實現創建一個新li標簽,內容為"php",并將新創建的li插入到內容為HTML的標簽前。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>無標題文檔</title>
</head>
<body>
<ul id="test"><li>JavaScript</li><li>HTML</li></ul>?
?
<script type="text/javascript">
? var otest = document.getElementById("test");?
? for(var i=0;i<otest.length;i++){
? ? if(otest[i].innerHTML=="HTML"){
? ? ? ?var node=otest[i].childNodes;
? ? } ??
? }
? var newnode=document.createElement("li");
? ? newnode.innerHTML="php";
? ? otest.insertBefore(newnode,node);
</script>?
為什么卻插到后面了?不知道哪錯了!求大神幫忙!拜謝了!
2016-09-14
<ul id="test"><li>JavaScript</li><li>HTML</li></ul>?
?
<script type="text/javascript">
? var otest = document.getElementById("test"); //獲得的是ul標簽對象,不是數組,可以添加下面一行代碼
? var otestArr = document.getElementById("test").childNodes;//獲得存儲<li>JavaScript</li>與<li>HTML</li>兩個標簽對象的數組,然后遍歷數組,做下面修改
?var node;
? for(var i=0;i<otestArr.length;i++){
? ? if(otestArr[i].innerHTML=="HTML"){
? ? node =otestArr[i];
? ? } ??
? }
? var newnode=document.createElement("li");
? ? newnode.innerHTML="php";
? ? otest.insertBefore(newnode,node);
這樣結果就對了
JavaScript
php
HTML
另外如果<ul id="test"><li>JavaScript</li><li>HTML</li></ul> 不再寫在一起,而是有空格,如下:
<ul id="test">
<li>JavaScript</li>
<li>HTML</li>
</ul>
var otestArr = document.getElementById("test").childNodes;此時獲得標簽對象元素個數就會變為5個,其中有文本對象(空格)
2016-09-14
<body>
<ul id="test"><li>JavaScript</li><li>hhh</li></ul>
<script type="text/javascript">
? var otest = document.getElementById("test"); //這個獲得的是ul這個對象,它不是一個數組,所以下面出現otest[i],我覺得這是不對的。
?for(var i=1;i<otest.length;i++){//這個for似乎是沒有意義的,你可以把試著改動<li>HTML</li>,它仍然會出現php在最底部。我也沒弄明白
??? if(otest[i].innerHTML=="HTML"){
?????? var node=otest[i].childNodes;
??? }??
? }
?var node=otest.childNodes[0];//把下劃線部分換成這句就沒問題了
? var newnode=document.createElement("li");
??? newnode.innerHTML="php";
??? otest.insertBefore(newnode,node);
</script>
個人見解,不知道對不對,哈哈