<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>    <script language="javascript" type="text/javascript">
<!--function selectFun(e)
{
    var _i=document.getElementById("menu");
    var c=new Array();    for(var i=0;i<_i.length;_i++)
    {    }
  
    for(var j=0;j<_i.length;j++)
    {
    alert("测试"+j);    }}
-->
    </script></head>
<body>
    <select id="menu" name="col" multiple="multiple">
        <option value="1">&nbsp;1&nbsp;</option>
        <option value="2">&nbsp;2&nbsp;</option>
        <option value="3">&nbsp;3&nbsp;</option>
        <option value="4" selected="selected">&nbsp;4&nbsp;</option>
        <option value="5">5</option>
    </select>
    <input type="button" onclick="selectFun()" value="你选的是">
</body>
</html>情况二<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>    <script language="javascript" type="text/javascript">
<!--function selectFun(e)
{
    var _i=document.getElementById("menu");
    var c=new Array();
  
    for(var j=0;j<_i.length;j++)
    {
    alert("测试"+j);    }
    
    for(var i=0;i<_i.length;_i++)
    {    }}
-->
    </script></head>
<body>
    <select id="menu" name="col" multiple="multiple">
        <option value="1">&nbsp;1&nbsp;</option>
        <option value="2">&nbsp;2&nbsp;</option>
        <option value="3">&nbsp;3&nbsp;</option>
        <option value="4" selected="selected">&nbsp;4&nbsp;</option>
        <option value="5">5</option>
    </select>
    <input type="button" onclick="selectFun()" value="你选的是">
</body>
</html>
你运行第一个代码块,会发现根本没有提示Alert的影子,而第二个就出来了,只是换了一个位置而已,变量消失了,而且是在IE,FF都消失了??什么原因呢?

解决方案 »

  1.   

    借自己的帖子要点分,本人级别低,并且是有名的"十万个为什么",而且问的问题都是Google上找不到解决方案的,所以只能发贴了,可是能力有限,希望有分多的高手支持一下我,赠我点分吧,不用太多,本人都是用于问问题的{不信请看我的记录,从来没乱用过分},先谢谢了
      

  2.   

    原因很简单:::
    function selectFun(e)
    {
        var _i=document.getElementById("menu");
        var c=new Array();    for(var i=0;i<_i.length;_i++)//红字这里你做了什么??你把_i给重新定义啦~~~~~
        {    }
      
        for(var j=0;j<_i.length;j++)//所以这里的_i哪里还有什么length 呢??
        {
        alert("测试"+j);    }}
      

  3.   

    为了有效避免手误带来的十万零一个为什么,强烈建议你修改代码为:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>    <script language="javascript" type="text/javascript">
    <!--function selectFun(e)
    {
        var obj=document.getElementById("menu");
        var c=new Array();    for(var i=0;i<obj.length;++)
        {    }
      
        for(var j=0;j<obj.length;j++)
        {
        alert("测试"+j);    }}
    -->
        </script></head>
    <body>
        <select id="menu" name="col" multiple="multiple">
            <option value="1">&nbsp;1&nbsp;</option>
            <option value="2">&nbsp;2&nbsp;</option>
            <option value="3">&nbsp;3&nbsp;</option>
            <option value="4" selected="selected">&nbsp;4&nbsp;</option>
            <option value="5">5</option>
        </select>
        <input type="button" onclick="selectFun()" value="你选的是">
    </body>
    </html>
      

  4.   

    4楼少了一个字母
    for(var i=0;i <obj.length;i++)
    {}