问答详情
源自:3-5 显示和隐藏(display属性)

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

<!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>

提问者:慕仙3797189 2018-11-23 22:03

个回答

  • 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";		}


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

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

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

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

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