Javascript 为什么我的变量会改变值?

Javascript 为什么我的变量会改变值?,javascript,jquery,Javascript,Jquery,我有一个简单的例子,在这里我得到一个div的值 在$document.readyfunction{}部分,我得到了div的文本。当我稍后尝试在函数中使用该值时,除非我添加.innerHTML,否则该值会更改。为什么该变量的值会发生变化?换句话说,为什么我以后调用该变量时需要添加.innerHTML 谢谢 <div id="my_div">1</div> // Javascript/JQuery $(document).ready(function(){ va

我有一个简单的例子,在这里我得到一个div的值

在$document.readyfunction{}部分,我得到了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???
};

该值会更改,因为您没有请求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