6 回答
TA贡献11条经验 获得超10个赞
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <select name = "edu" id = "edu"> <option value = "博士">博士~~~</option> <option value = "本科" id="benke">本科~~~</option> <option value = "大专">大专~~~</option> <option value = "幼儿园">幼儿园~~~</option> </select> <script> var gra = document.getElementById("edu"); var A = gra.childNodes; alert(A[1].firstChild.nodeValue); </script> </body> </html>
从js逐句来分析。
获取id为“edu”的元素节点。
获取该元素下的子节点数组(nodelist)。嗯C写错了,下次注意。(小驼峰法命名函数跟变量就是第一个单词首字母小写,之后单词首字母大写。大驼峰就是所有单词首字母都大写,推荐对象命名使用大驼峰,这样一眼就能区分对象跟函数和变量的区别了,函数也是一种变量)
弹出警告窗A(0)是id“edu”元素的第一个子节点。首先你的<select>与<option>之间有空格,因此这里有一个空白节点,IE下没有,其他浏览器都不会忽略这个空白节点,这点是第二。
你想取得第一个子节点,实际上有一个空白节点,应该是第二个节点value="博士"的这个<option>的文本,因此你使用了value,应该使用nodeValue才对。还有一个问题在于文本节点本身是元素节点的子节点。也就是A[1].firstchild.nodeValue
最后你需要继续加油,哈哈。
TA贡献361条经验 获得超191个赞
首先是childNodes大小写问题呢,然后childNodes指所有子元素(包括文本元素),当你代码这么写:
<select name = "edu" id = "edu"> <option value = "博士">博士~~~</option> <option value = "本科" id="benke">本科~~~</option> //这里select和option之间,option和option之间有空白,这段空白就是文本节点;
因此childNodes[0]值得是中间那段空白,自然value为undefined;
可以用children(只获取元素节点)来代替childNodes[0]
TA贡献4条经验 获得超3个赞
- -别去写这种糟糕的代码,没任何意义,明白一些问题,属性名永远是小写开头,所以必然不可能出现ChildNodes这种东西。看你这写的代码,新手的实在有些过分了。
TA贡献1条经验 获得超0个赞
首先应该是 var A=gra.childNodes;
其次A返回的是一个nodeList,里面有9个节点,而第一个是文本节点(<TextNode textContent="\n\n">)
弹出的肯定是undefined。所以可以根据nodetype来选择你想要的
添加回答
举报