JavaScript:
lang = {'edit': 'Edit'}; // global variable
HTML:
<select onchange="alert(lang.edit)"> // alerts undefined
每当事件触发时,它都会提示“未定义”。 lang
变量是全局变量,为什么内联事件处理程序代码不能引用它?
确保 JavaScript 文件显式设置全局变量:
window['lang'] = {'edit': 'Edit'};
确保您的事件处理程序代码明确引用全局“lang”变量:
<select onchange='alert(window.lang.edit)'>
第一个可能已经没问题了,但我添加它只是为了确保。第二件事,嗯,对“onfoo”属性值的解释是微妙而奇怪的。如果 <select>
有一个“lang”属性DOM 元素或 <form>
上的“lang”属性<select>
周围的标签,那么在“onclick”值中对标识符“lang”的引用将选择 that 而不是您在 JavaScript 文件中定义的全局“lang”。你的“onclick”值被一个看起来或多或少像这样的过程变成了一个函数(为了让它作为一个事件处理程序工作):
var handler = new Function("event", "with (this.form) { with (this) { alert(lang.edit); }}");
这很奇怪,但这实际上是那种事件处理程序代码所发生的事情。
我是一名优秀的程序员,十分优秀!