我在页面里引用外部JS,并调用JS里定义的变量,奇怪的是有些变量能成功调用,有的却不能调用(得到undefined),更奇怪的是在JS里把能调用和不能调用的变量位置换换,原先能调用的就不能调用了,而不能调用的又能调用了,比如在JS里的代码是:var str={
str1:"aaaa",
str2:"bbbb",
str3:"cccc",
str4:"dddd",
str5:"eeee",
str6:"ffff",
str7:"gggg"
}我同样调用 str.str5 和 str.str6, 就有可能出现 str.str5 能调用, str.str6 调用失败的情况, 我如果在JS里把 str5 和str6 的位置对调一下,  str.str6就能调用, str.str5 反而不能调用了, 有谁碰到过这种问题吗?

解决方案 »

  1.   

    我说的不清楚吗,可是我原来的代码太长,而且JS又镶套JS,不方便在这里写出来,我就说详细一点:外部JS的代码:var str={ 
    str1:"aaaa", 
    str2:"bbbb", 
    str3:"cccc", 
    str4:"dddd", 
    str5:"eeee", 
    str6:"ffff", 
    str7:"gggg" 

    当alert(str.str5+“/”+str.str6)只能得到:eeee/undefinedda当我把外部JS代码改动为(str5和str6位置对换了一下):var str={ 
    str1:"aaaa", 
    str2:"bbbb", 
    str3:"cccc", 
    str4:"dddd", 
    str6:"ffff", 
    str5:"eeee", 
    str7:"gggg" 
    } 然后再alert(str.str5+“/”+str.str6) 就得到:undefined/dddd我想破脑袋也不知道为什么会这样?
      

  2.   

    刚才写错了,应该得到:undefined/ffff我就不明白在同一个数组里,为什么有些变量能得到,有些却“undefined”?
      

  3.   

    试了下,得不出你那种效果啊~厉害~~~123123.jsvar str={  
    str1:"aaaa",  
    str2:"bbbb",  
    str3:"cccc",  
    str4:"dddd",  
    str5:"eeee", 
    str6:"ffff",
    str7:"gggg"
    }  
    <script src="123123.js">
    </script>
    <script>
    alert(str.str5+"/"+str.str6)
    </script>
      

  4.   

    真是太奇怪了,我在JS里插入很多空行问题居然解决了,难道JSON的读取跟变量在哪一行有关系吗
      

  5.   

    试试
    function warning(){alert([str.str5,str.str6]);}
    setTimeout(warning,2000);
      

  6.   

    这种情况一般是str.str6在赋值时引用了变量,而该变量出了问题得到undefined,再仔细查查吧。。