日期:2014-05-16  浏览次数:20346 次

自定义变量为何不能全局调用?
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<title>无标题文档</title>
<script> 
var t;
$(function(){
t=$(".list").text();
 
})

alert(t);
</script>
</head>
<body>
<div class="list"> xxxxxxxxxxxxxx </div>
</body>
</html>

------解决方案--------------------
alert(t);放的位置有问题,这时的t还未定义,当然提示undefined

------解决方案--------------------
跟全局什么的没关系,t没有赋值而已
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<title>无标题文档</title>
<script>
var t;
$(function(){
t=$(".list").text();//这句在事件中,要页面加载完成后执行,
})

alert(t);//这句会在页面加载完成前执行
 
你可以自己打断点或用alert确认

------解决方案--------------------
在HEAD中的代码执行的时候, BODY的内容还没有执行, 所以取不到值
------解决方案--------------------
HTML code
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<meta http-equiv="Conent-Type" Content="text/html" charset="utf8">
<title>无标题文档</title>
</head>
<body>
<script type="text/javascript">  
var t;
$(function() {
t = $(".list").text();  
});
$(document).ready(function() {
    alert(t);
});
</script>
<div class="list"> xxxxxxxxxxxxxx </div>
</body>
</html>

------解决方案--------------------
alert在t赋值前就执行了。
这纯粹是逻辑的问题了,只能自己去理解。
------解决方案--------------------
怎么说了你还是不明白呢,很简单的先后顺序
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<title>无标题文档</title>
<script>
var t;
$(function(){///这个在加载完执行没有错
t=$(".list").text();//这个能取到值也没有错
})

alert(t);//但是这个是在加载完成前执行,这时候还没有执行上面那个函数,也就是说t没有被赋值,不是代码写在后面就后执行的</script>
</head>
<body>
<div class="list"> xxxxxxxxxxxxxx </div>
</body>
唉 这么简单的问题感觉解释起来好恼火,楼主请理解一下代码的执行顺序
------解决方案--------------------
js 执行顺序问题
------解决方案--------------------
2楼说的比较容易理解
------解决方案--------------------
<head>元素内的JS文件在都被下载、解析和执行完成以后才能开始呈现页面。
要通过window.onload延迟内容调用吧。
JScript code

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script>
<title>无标题文档</title>
<script>  
    window.onload = function(){
        var t;
        $(function(){
        t=$(".list").text();
          
        })
        
        alert(t);
    }
</script>
</head>
<body>
    <div class="list"> xxxxxxxxxxxxxx </div>
</body>
</html>