Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以附加“;后缀";通过select调用javascript函数?_Javascript_Function_Select - Fatal编程技术网

有没有一种方法可以附加“;后缀";通过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);}
如果这样做不起作用,请提供一个更好地代表您实际问题的示例,以及此解决方案不起作用的原因。一个简单的方法是使用包含键值对的对象,其中值是您要运行的函数,键是函数的名称。