我有一个简单的jsfiddle,其中我得到了div的值。
在$(document).ready(function(){})
部分,我得到div的文本就好了。当我稍后尝试在函数中使用该值时,值会更改(除非我添加.innerHTML
)。为什么该变量的值会发生变化?换句话说,为什么我稍后在调用该变量时需要添加.innerHTML
?
谢谢!
<div id="my_div">1</div>
// Javascript/JQuery
$(document).ready(function(){
var my_div = $("#my_div").text();
alert(my_div);
func();
});
function func(){
alert(my_div); // why does the value change here...why???
alert(my_div.innerHTML); // why do I need ".innerHTML' here???
};
答案 0 :(得分:2)
值会发生变化,因为您没有请求div的任何特定“功能”。你只是想提醒一个元素......
在第一位,您已在函数内部分配了my_div。
如果将var my_div
移动到函数外部,它将变为全局变量而不是本地变量。
编辑小提琴:here
答案 1 :(得分:2)
因为你声明my_div不在全局范围内。
你应该这样做:
var my_div;
$(document).ready(function(){
my_div = $("#my_div").text();
alert(my_div);
func();
});
答案 2 :(得分:2)
这是因为所有具有ID的元素都是默认情况下全局范围的属性。
因此,my_div
中的function func()
基本上与调用window.my_div
相同。
尝试删除var my_div = $("#my_div").text()
,您仍然可以在func()
中使用它。
答案 3 :(得分:1)
$(document).ready(function(){
var my_div = $("#my_div").text();
alert(my_div);
func(my_div);
});
function func(my_div){
alert(my_div); // why does the value change here...why???
};
您需要传递对my_div的引用。
答案 4 :(得分:0)
执行以下操作时:
function func(){
alert(my_div); // why does the value change here...why???
alert(my_div.innerHTML); // why do I need ".innerHTML' here???
};
你得到一个html元素的id(my_div
)
为什么?因为my_div
没有被宣布为全球
这就是为什么当你提醒你得到一个物体时。
尝试使用其他名称将代码运行到my_div
,例如:
$(document).ready(function(){
var div = $("#my_div").text();
alert(my_div);
func();
});
function func(){
alert(div);
alert(div.innerHTML);
};
您会看到收到以下错误:
Uncaught ReferenceError: div is not defined