变量值不改变为什么
Variable value does not change why?
代码:
var popupFirstName;
PopupFirstNameButton.addEventListener('click', function(){
popupFirstName = 'SomeValue';
});
当我用alert(popupFirstName)
表示其他函数时,它表示undefined
。我怎样才能得到这个值?
popupFirstName
有一个局部作用域,从你告诉我们的我们不知道。但我认为它是在一个函数中,所以作用域将是该函数的局部。你定义的函数继承了对该变量的访问;这是语言的一个方便特性。
如果你想让变量的一个实例具有全局作用域,写window.popupFirstName
您在哪个浏览器中进行测试?Firefox需要 addEventListener
的第三个参数,IE使用一个完全不同的方法( attachEvent
)。
您可以尝试将该函数赋值给onclick
:
PopupFirstNameButton.onclick = function(){
popupFirstName = 'SomeValue';
};
如果你想了解更多关于高级事件处理及其跨浏览器问题,或者关于JavaScript和事件的一般知识,我建议阅读quirksmode.org上的好文章。
不言而喻,在设置变量之前必须单击按钮,并且调用alert(popupFirstName)
的函数必须访问该变量。
确保该变量声明在与调用它的函数相同的块作用域中
您遗漏了addEventListener函数的第三个参数。以Firefox为例,您需要:
PopupFirstNameButton.addEventListener('click', function(){
popupFirstName = 'SomeValue';
}, false);
https://developer.mozilla.org/en/DOM/element.addEventListener 相关文章:
- 为什么使用immutableJS我的状态没有改变
- 为什么当我分配给element.style时,我的元素的样式没有改变
- 请解释为什么“改变数字的值甚至没有意义”
- 为什么日期对象的时间没有改变?我怎样才能改变它
- 为什么我的图像高度没有改变
- 为什么硒会改变元素's href
- Angular.js:为什么使用简单的帮助程序函数改变$scope会导致未插值的 {{..}} 表达式
- 为什么在Firefox中后台不会改变,但在IE中会改变
- 我的 innerHTML 命令没有改变任何东西,我不知道为什么
- 为什么“document.form1.yourname”的值改变了,即使我设置了onsubmit=“return fal
- 为什么如果带有 innerWidth 的语句不会改变它的行为
- 为什么使用 grunt-contrib-cssmin 会改变我的 css,而它应该只缩小它
- 为什么在单元测试中注入“ng”会改变承诺处理行为
- 为什么我的平衡不会改变
- 为什么改变原型不好(js)
- 为什么改变一个已经推送到数组中的对象也会改变数组中的值呢?
- 如果array .prototype.slice()方法返回浅拷贝,为什么改变切片数组的值不会改变原始数组
- 为什么改变图像的来源,执行我的内联javascript
- 为什么改变对象的[[prototype]]会影响性能?
- 为什么改变我的表单输入值不出现在Javascript中