有没有一种方法可以附加“;后缀";通过select调用javascript函数?
我不知道这到底叫什么,也不知道这是否可能。但基本上我想把东西添加到一个“不完整”的方法中。比如说有没有一种方法可以附加“;后缀";通过select调用javascript函数?,javascript,function,select,Javascript,Function,Select,我不知道这到底叫什么,也不知道这是否可能。但基本上我想把东西添加到一个“不完整”的方法中。比如说 captureDog =()=>{ alert('caught dog'); } captureCat =()=>{ alert('caught cat'); } <select id="pet"> <option value="Cat">cat</option> <option value="Dog">dog<
captureDog =()=>{
alert('caught dog');
}
captureCat =()=>{
alert('caught cat');
}
<select id="pet">
<option value="Cat">cat</option>
<option value="Dog">dog</option>
</select>
最好我希望这是用纯javascript完成的
编辑:语法
EDIT2:固定箭头函数我想是这样的:
var selectField = document.getElementById("pet");
let X = {
cat: function(){
console.log("cat 123")
},
dog: function(){
console.log("dog 123")
}
}
selectField.addEventListener("change", x => {
let val = x.target.options[x.target.selectedIndex].value
X[val]();
});
小提琴:我想是这样的:
var selectField = document.getElementById("pet");
let X = {
cat: function(){
console.log("cat 123")
},
dog: function(){
console.log("dog 123")
}
}
selectField.addEventListener("change", x => {
let val = x.target.options[x.target.selectedIndex].value
X[val]();
});
fiddle:假设为全局范围,
window['capture'+selectField.value]()
会这样做,如果您解决了大写字母的问题。否则,构建一个映射,例如({cat:captureCat,dog:captureDog})[selectField.value]()代码>看起来您的第一个代码段有语法错误。你的意思是做function captureDog(){
。你把函数声明和箭头函数混淆了。感谢你没有注意到大写错误。我对你的两个建议都有一个问题…它们是如何工作的?为了澄清,我以前从未在windows[]上使用过任何东西,还有映射功能…这是如何工作的?function capture(类型){alert(“catch”+type);}
如果这样做不起作用,请提供一个更好地代表您实际问题的示例,以及此解决方案不起作用的原因。一个简单的方法是使用包含键值对的对象,其中值是您要运行的函数,键是函数的名称。假设为全局范围,window['capture'+selectField.value]()
会这样做,如果您修复了大写字母问题。否则,构建一个映射,例如({cat:captureCat,dog:captureDog})[selectField.value]();
看起来您的第一个代码段有语法错误。您的意思是执行函数captureDog(){
。你把函数声明和箭头函数搞混了。感谢你没有注意到大写错误。我对你的两个建议都有一个问题……它们是如何工作的?澄清一下,我以前从未在windows[]上使用过任何东西,还有映射功能……这是如何工作的?函数捕获(类型){alert(“catch”+type);}
如果这样做不起作用,请提供一个更好地代表您实际问题的示例,以及此解决方案不起作用的原因。一个简单的方法是使用包含键值对的对象,其中值是您要运行的函数,键是函数的名称。