为啥函数外声明了变量,在函数里面不能用,了解一下吧

来源:3-5 显示和隐藏(display属性)

慕仙3797189

2018-11-23 22:03

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>display</title>
    <script type="text/javascript">
    var mychar = document.getElementById("con");
        function hidetext() 
  { 
  mychar.style.display="none";
       
  } 
  function showtext() 
  { 
  mychar.style.display="block";
       
  }
    </script>
</head>
<body> 
    <h1>JavaScript</h1> 
    <p id="con">做为一个Web开发师来说,如果你想提供漂亮的网页、令用户满意的上网体验,JavaScript是必不可少的工具。</p>
    <form>
       <input type="button" onclick="hidetext()" value="隐藏内容" />
       <input type="button" onclick="showtext()" value="显示内容" />
    </form>
</body>
</html>

写回答 关注

2回答

  • Test_Engineer
    2018-11-25 13:20:20
    已采纳

    因为

    步骤一:var mychar = document.getElementById("con");这个语句是把p标签的对象赋值给mycahr。

    而这个动作是通过点击“隐藏内容”和“显示内容”来执行的。

    你点击隐藏内容执行hidetext()函数,而函数体内就执行了步骤一,然后执行mychar.style.display="none";并隐藏内容。

    显示内容也是如此。

    你把var mychar = document.getElementById("con");放到函数体外的时候,当你点击隐藏或显示内容按钮的时候,这个语句就没有执行嘛。

    这样子就OK了。

    var mychar = null;        function hidetext()  		{  		    mychar= document.getElementById("con");            mychar.style.display="none";		}  		function showtext()  		{  		    mychar = document.getElementById("con");            mychar.style.display="block";		}


    Hunger... 回复慕仙3797...

    牛批~

    2018-12-07 16:56:29

    共 3 条回复 >

  • 慕无忌5052493
    2018-11-25 22:12:18

    我也被你的问题困扰了很久....

    body中最后加<script>var mychar = document.getElementById("con");</script>就好了

    先执行p id=con后才能被getElementById获取到,放在head中先执行getElementById的话根本没有con这个元素。

    函数是调用的,顺序不影响执行,所以放在函数中就没有顺序问题了。

    Assain 回复qq_慕工程...

    其实这就是一个浏览器解释顺序的一个原理。由于此script标签先于head被浏览器解释了,而根据从上往下解释的顺序,那么是不是先解释head再解释Body的内容?那么是不是就是在script标签被解释后才开始解释body内部的p标签的内容,那么在script语句中的var mychar = document.getElementById("con");又不在函数体内(函数体需要调用才能被解释),即优先执行。所以便在script被解释的时候那么它并没有找到id为"con"的对象,因此便会出现以上的问题。

    2019-01-29 13:33:42

    共 2 条回复 >

JavaScript入门篇

JavaScript做为一名Web工程师的必备技术,本教程让您快速入门

739813 学习 · 9566 问题

查看课程

相似问题