开发者社区> 问答> 正文

JavaScript 这句怎么不能在 function 外面声明?

我记得以前学的时候,只要在全局声明了变量,function 内也能用,可这里为什么出错呢?

正常情况:

<script>

    function addTextNode(text)
    {
        var newtext = document.createTextNode(text);
        var p1 = document.getElementById("p1");     //这句为什么不能定义在外面!!
        p1.appendChild(newtext);
    }

</script>

<body>
    <button onclick="addTextNode('WE CAN!');">WE CAN!</button>
    <hr/>
    <p id="p1">First line of paragraph.</p>
</body>

错误情况:

<script>
    var p1 = document.getElementById("p1");     //这句为什么不能定义在外面!!

    function addTextNode(text)
    {
        var newtext = document.createTextNode(text);
        p1.appendChild(newtext);
    }
</script>

<body>
    <button onclick="addTextNode('WE CAN!');">WE CAN!</button>
    <hr/>
    <p id="p1">First line of paragraph.</p>
</body>

展开
收起
杨冬芳 2016-06-22 12:49:12 1735 0
1 条回答
写回答
取消 提交回答
  • IT从业

    在执行<script>的时候,文档还没有载入完,<p id="p1">在下面,还没被载入,所以此处var p1获取不到东西。如果把这段script放到<p id="p1">的下面,就能正常工作。

    2019-07-17 19:45:25
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载