向函数传递参数
passing arguments to a function
我有一个工作正常的函数:
function clickMe() {
var evt = new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window,
});
var buttonId = document.getElementById("fib_button")
h = buttonId.nextSibling;
h.className = (h.className == 'hidden') ? '' : 'hidden';
buttonId.innerHTML = (buttonId.innerHTML == 'Show') ? 'Hide' : 'Show';
}
document.getElementById("fib_button").addEventListener('click', clickMe);
现在,我想让它更通用一些这样ID名就能传递给函数了这样我就不用在函数体中硬编码了但这行不通
function clickMe(divID) {
var evt = new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window,
});
var buttonId = document.getElementById(divID)
h = buttonId.nextSibling;
h.className = (h.className == 'hidden') ? '' : 'hidden';
buttonId.innerHTML = (buttonId.innerHTML == 'Show') ? 'Hide' : 'Show';
}
document.getElementById("fib_button").addEventListener('click', clickMe("fib_button");
我遇到的另一个问题是在这一行:
buttonId.innerHTML = (buttonId.innerHTML == 'Show') ? 'Hide' : 'Show';
"隐藏/显示"应该放在另一个方向,但如果我交换两个,它停止正常工作。
请通知
给你一把小提琴https://jsfiddle.net/2b3b7kp5/14/
请记住,addEventListener
函数正在等待一个函数,因此clickMe
函数应该返回一个函数。在clickMe
函数中,您可以返回一个匿名函数,我们将可以访问范围和您发送给clickMe
的任何参数。
你要找的东西是这样的:
function clickMe(divID) {
return function () {
var evt = new MouseEvent("click", {
bubbles: true,
cancelable: true,
view: window,
});
console.log(divID);
var buttonId = document.getElementById(divID)
h = buttonId.nextSibling;
h.className = (h.className == 'hidden') ? '' : 'hidden';
buttonId.innerHTML = (h.className == 'hidden') ? 'Show' : 'Hide';
}
}
document.getElementById("fib_button").addEventListener('click', clickMe("fib_button"));
使用匿名函数function () { return function() {...}}
更新的示例https://jsfiddle.net/2b3b7kp5/25/
为了更通用,最好使用this
。
function clickMe() {
h = this.nextSibling;
h.className = (h.className == 'hidden') ? '' : 'hidden';
this.innerHTML = (this.innerHTML == 'Show') ? 'Hide' : 'Show';
}
document.getElementById("fib_button").addEventListener('click', clickMe);
则this
是触发事件的元素。
我遇到的另一个问题是在这一行:
buttonId.innerHTML = (buttonId.innerHTML == 'Show') ? 'Hide' : 'Show';
"Hide/Show"应该以另一种方式放置,但如果我交换这两个,它停止正常工作
如果你交换,你会设置innerHTML显示,如果它说,每次显示。因此它永远不会改变。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 函数未将值作为参数传递
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 为什么不'我们在javascript中使用函数参数的数据类型
- 你好,这是测试用例,我必须在函数中传递n个参数
- JavaScript - 多参数函数,它是多个图像库的字符串
- 如何从两个参数函数返回随机整数
- 以无点风格在Ramda中编写一个无参数函数
- JS:将单参数函数转换为可链接函数
- 正则表达式类似于Javascript中的参数函数
- 将 $' 值传递给替换的关联参数函数
- "这个“;在参数函数中
- 如何向jquery插件发送参数函数
- 将参数函数Node.js从一个js传递到另一个js
- 如何在javascript参数函数中传递PHP post方法字符串
- 装饰 Javascript Promise.then 以便参数函数接收附加参数
- 正在分析setInterval ID'是的's参数函数
- 如何根据一个参数函数计算年龄
- 对象参数/函数和/或三元运算符混淆