JavaScript的:
lang = {'edit': 'Edit'}; // global variable
HTML:
<select onchange="alert(lang.edit)"> // alerts undefined
每当事件触发时,它都会发出“未定义”警报。 lang
变量是全局变量,为什么内联事件处理程序代码不能引用它?
答案 0 :(得分:4)
确保JavaScript文件显式设置全局变量:
window['lang'] = {'edit': 'Edit'};
确保您的事件处理程序代码明确引用全局“lang”变量:
<select onchange='alert(window.lang.edit)'>
第一个可能已经没问题了,但我补充说只是为了确保。第二件事,嗯,“onfoo”属性值的解释是微妙和奇怪的。如果在<select>
周围的<form>
标记上有<select>
DOM元素或“lang”属性的“lang”属性,则引用“onclick”值中的标识符“lang”将获取 而不是您在JavaScript文件中定义的全局“lang”。您的“onclick”值将变为一个函数(以使其作为事件处理程序)由一个看起来或多或少像这样的进程:
var handler = new Function("event", "with (this.form) { with (this) { alert(lang.edit); }}");
这很奇怪,但实际上这种事件处理程序代码会发生什么。
答案 1 :(得分:0)
javascript中的每个全局对象都是window对象的属性。所以你应该写 window.lang = {'edit':'Edit'};