Javascript 为什么我的变量会改变值?
我有一个简单的例子,在这里我得到一个div的值 在$document.readyfunction{}部分,我得到了div的文本。当我稍后尝试在函数中使用该值时,除非我添加.innerHTML,否则该值会更改。为什么该变量的值会发生变化?换句话说,为什么我以后调用该变量时需要添加.innerHTML 谢谢Javascript 为什么我的变量会改变值?,javascript,jquery,Javascript,Jquery,我有一个简单的例子,在这里我得到一个div的值 在$document.readyfunction{}部分,我得到了div的文本。当我稍后尝试在函数中使用该值时,除非我添加.innerHTML,否则该值会更改。为什么该变量的值会发生变化?换句话说,为什么我以后调用该变量时需要添加.innerHTML 谢谢 <div id="my_div">1</div> // Javascript/JQuery $(document).ready(function(){ va
<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???
};
该值会更改,因为您没有请求div的任何特定“功能”。您只是尝试向元素发出警报 在第一位中,您已经在函数中指定了my_div。 如果将var my_div移到函数外部,它将成为全局变量,而不是局部变量
编辑的fiddle:因为您声明my_div不在全局范围内 你应该这样做:
var my_div;
$(document).ready(function(){
my_div = $("#my_div").text();
alert(my_div);
func();
});
这是因为默认情况下,所有ID为的元素都是全局范围的属性 因此,函数func中的my_div基本上与调用window.my_div相同 尝试删除var my_div=$my_div.text,您仍然可以在func中使用它 这个问题是相关的
执行以下操作时,您需要传递对my_div的引用。:
function func(){
alert(my_div); // why does the value change here...why???
alert(my_div.innerHTML); // why do I need ".innerHTML' here???
};
您可以通过id my_div获得一个html元素。
为什么?因为我的分区没有声明为全局。
这就是为什么当你发出警报时,你会得到一个物体
尝试使用my_div的其他名称运行代码,如:
您将看到出现以下错误:
Uncaught ReferenceError: div is not defined
为什么这会被否决?实际上我的部门被宣布为全球的;见我的答案谢谢你的回答。这是一个非常清楚的解释。克里斯·布拉德伯里接受了,因为他比你稍微快一点。再次感谢@Gaga先生:好的,没问题:我认为值得一提的是,他的原始示例提醒了div元素,因为window.my_div实际上是ID元素。
$(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