gpt4 book ai didi

javascript - 如何从内联事件处理程序中引用全局变量?

转载 作者:太空宇宙 更新时间:2023-11-04 15:39:56 25 4
gpt4 key购买 nike

JavaScript:

 lang = {'edit': 'Edit'}; // global variable

HTML:

 <select onchange="alert(lang.edit)"> // alerts undefined 

每当事件触发时,它都会提示“未定义”。 lang 变量是全局变量,为什么内联事件处理程序代码不能引用它?

最佳答案

  1. 确保 JavaScript 文件显式设置全局变量:

    window['lang'] = {'edit': 'Edit'};
  2. 确保您的事件处理程序代码明确引用全局“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); }}");

这很奇怪,但这实际上是那种事件处理程序代码所发生的事情。

关于javascript - 如何从内联事件处理程序中引用全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4418624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com