黑马程序员技术交流社区

标题: js获取节点的问题 [打印本页]

作者: 冯超    时间: 2013-3-23 20:20
标题: js获取节点的问题
本帖最后由 冯超 于 2013-3-25 08:38 编辑

我们都知道获取几个节点的方法 如下:
1.document.getElementById();
2.document.getElementsByname();
3.document.getElementsByTagname();
问题如下(看代码):
  1.   <body>
  2.                    <form action="post">
  3.                            1:<input type="text" name="music" value="我们的爱">

  4.                            2:<input type="text" name="music" value="恋爱ing">

  5.                            3:<input type="text" name="music" value="只是回忆">

  6.                            4:<input type="text" name="music" value="爱了,累了">

  7.                    </form>
  8.                    <h1 id="h1" name="test">
  9.                            明天休息!
  10.                    </h1>
  11.                   
  12.                    <script type="text/javascript">
  13.                            //1.利用firstchild输出明天休息
  14.                    /*        var h1Node = document.getElementById("h1");
  15.                            var value = h1Node.firstChild.nodeValue; */
  16.                            
  17.                    /*        var h1Node = document.getElementsByTagName("h1");
  18.                            alert(h1Node.nodeType + ":" + h1Node.length); */
  19.                            
  20.                            var h1Node = document.getElementsByName("test");
  21.                   
  22.                    </script>
  23.   </body>
复制代码
看过王威老师视频的人都知道,我想问的是什么,
就是用firstchild输出明天休息!
   用Byid可以,但是其他两个就不行咯,不知道是什么原因。
作者: 王洪宇    时间: 2013-3-23 22:36
var h1Node = document.getElementsByTagName("h1");
var h1Node = document.getElementsByName("h1");
它们得到的都是数组吧。
试试这样用行不行:alert(h1Node[0].firstChild.nodeValue);
作者: 黄杨    时间: 2013-3-23 23:16
直接用alert(h1Node[0].innerHTML);输出不就完事了,呵呵
作者: 黄杨    时间: 2013-3-23 23:41
不过h1标签是没有name属性的,你这样使用有些浏览器直接报错
作者: 黄杨    时间: 2013-3-24 00:03
不好意思,刚才回答不完整

var h1Node1 = document.getElementsByTagName("h1");
alert( h1Node1[0].firstChild.nodeValue);

var h1Node2 = document.getElementsById("h1");
alert(h1Node2.firstChild.nodeValue);

上面2个都可以成功输出,使用getElementsByName来获取节点会出错是因为h1标签没有name属性的



作者: 冯超    时间: 2013-3-24 09:36
以前的回答我灰常感谢,其实发帖之后,我就发现了问题:
   我在我的myeclipse中安装了Apama插件,就是写js可以自动提示的,我发现用另外两个(getElementByTagName,getElementsByName)获取结点并没有提示什么childNodes,firstChild,是我太依赖编译器了。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2