问答详情
源自:9-7 节点属性

这段代码有问题吗?为什么在浏览器中无法输出?

这段代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>节点属性</title>
    <script type="text/javascript">
        var mychar = document.getElementsByTagName("p");
        var val;
        for (var i = 0; i < mychar.length; i++) {
            val = mychar[i].nodeName;
            document.write("p标签的节点名称是:" + val + "<br />");
        }
    </script>
</head>
<body>
    <p id="p1">I love JavaScript!</p>
</body>
</html>

为什么浏览器只显示p段落的内容,JS里面需要输出的内容怎么不显示?

提问者:爱慕课啊 2016-11-04 15:10

个回答

  • 老友丶
    2016-11-04 15:41:01
    已采纳

    交换一下代码顺序:

    <!DOCTYPE html>

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

        <title>节点属性</title>

    </head>

    <body>

        <p id="p1">I love JavaScript!</p>

        <script type="text/javascript">

            var mychar = document.getElementsByTagName("p");

            var val;

            for (var i = 0; i < mychar.length; i++) {

                val = mychar[i].nodeName;

                document.write("p标签的节点名称是:" + val + "<br />");

            }

        </script>

    </body>

    </html>


    你一开始那样,js运行得时候还没有p标签(后面加载),所以把JS放在后面就可以了。

  • 慕村1994845
    2016-12-07 21:59:53

    除了调用事件,其他都要注意JS代码所处的位置问题

  • colg
    2016-11-04 15:49:54

    把 js 代码放在 p 标签下面,

    或者写个方法把js代码包裹起来

    	<script type="text/javascript">
    		window.onload = function() {
    			var mychar = document.getElementsByTagName("p");
    			var val;
    			for (var i = 0; i < mychar.length; i++) {
    				val = mychar[i].nodeName;
    				document.write("p标签的节点名称是:" + val + "<br />");
    			}
    		}
    	</script>