gpt4 book ai didi

javascript - 使用JS绑定(bind)onchange事件(语法错误)

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

我最近一直在花时间研究 javascript 事件监听器,以尝试了解更多信息。但是我遇到了障碍。

我似乎遇到语法错误,SyntaxError:预期的表达式,得到关键字“if”。

The Question

If someone could elaborate and explain my mistake to me, I would be thankful. See the Js Fiddle for a more complete example of what I'm tryign to accomplish.

我尝试使用控制台突出显示的 MDN ( This Article Imparticular ) 阅读更多内容。然而,我无法理解我的错误以及它如何与本文相吻合。

function myFunction() {

// Text field element.
var a = document.getElementsByName('field-one')[0];

// Checkbox element.
var b = document.getElementById('box-2');

// Select Element
var c = document.getElementById('dept');

// Bind onchange event.
c.setAttribute('onchange', myFunction()),

if (b.checked) {
a.disabled = false;
a.placeholder = 'Enter Your Full Name.';

} else {
a.disabled = true;
a.placeholder = 'Not Applicable.';
}

}

function myFunction()

JS FIDDLE

如有任何帮助,我们将不胜感激。

问候,

-B.


编辑 7 月 4 日星期二

我最终彻底改造了这个,试图让事情变得更顺利。在你们的帮助下,我能够澄清一些事情。

特别是@Kind User 和@Shaminder S Aujla 强调的关键点。

  • You have used comma instead of semicolon.
  • If you want to call the function, use just the name of the function.
  • Don't call the function while binding it.
  • Calling it like myFunction(); will throw "Too much recursion error".

产生的变化如下所示,您还可以看到我完成的 fiddle here ;

window.addEventListener('load', function() {

// Select Element
var c = document.getElementById('dept');
// Text field element.
var a = document.getElementsByName('field-one')[0];

// Bind onchange event.
c.onchange = function() {

if (this.options[this.selectedIndex].value == 3) {
a.disabled = false;
a.placeholder = 'Enter Your Full Name.';
} else {
a.disabled = true;
a.placeholder = 'Not Applicable.';
}
}
})

再次感谢大家,真的很感激。 :)

问候,- B.

最佳答案

您的代码中存在语法错误。这:

 // Bind onchange event.
c.setAttribute('onchange', myFunction()),

请改成这样:

// Bind onchange event.
c.setAttribute('onchange', myFunction);

另外,调用函数时,省略关键字function:所以,这样调用它:

myFunction();

关于javascript - 使用JS绑定(bind)onchange事件(语法错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44902907/

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