我们在写JS的过程中,有时可能会出现比较奇葩的问题,今天主要讨论JS获取对象的问题。
获取对像的方法有document.getElementById(),document.getElementsByName(),document.getElementsByTagName()。
首先我们定义HTML元素,要求我们获取form的所有子元素:
<form name="form1" id="myform" action="test.html" method="post" > <input type="text" name="sitename" value="达维营_1" id="tid_1" ><br> <input type="text" name="sitename" value="达维营_2" id="tid_2" ><br> <input type="text" name="sitename" value="达维营_3" id="tid_3" ><br> <input type="button" name="ok" value="保存"/> </form>
我们通过上述三种方法获取其子元素
javascript如下:
var tab1 = document.getElementById('myform'); var tab2 = document.getElementsByName('form1'); var tab3 = document.getElementsByTagName('form'); var tab4 = tab1.childNodes; var tab5 = tab2.childNodes; var tab6 = tab3.childNodes; console.log('开始打印:'); console.log('开始打印tab1:'); console.log(tab1); console.log('开始打印tab2:'); console.log(tab2); console.log('开始打印tab3:'); console.log(tab3); console.log('开始打印tab4:'); console.log(tab4); console.log('开始打印tab5:'); console.log(tab5); console.log('开始打印tab6:'); console.log(tab6);
通过以上我们发现,只有通过getElementById才能够使用childNodes,通过其它两种方法获取子元素均出现undefined。由于没有找到具体的原因,估计是无法对tab2,tab3使用childNodes.