Javascript 使用changin变量在更改函数时设置多个滑块
我有一个参数不断变化的循环,我想在这个循环中创建的滑块的oninput函数中使用它,但我无法让它工作。以下是我的脚本的简化版本:Javascript 使用changin变量在更改函数时设置多个滑块,javascript,html,Javascript,Html,我有一个参数不断变化的循环,我想在这个循环中创建的滑块的oninput函数中使用它,但我无法让它工作。以下是我的脚本的简化版本: for (var con in dict) { var div = document.getElementById("content"); var conDiv = document.createElement("div"); conDiv.innerHTML = "<b>" + con + ":</b><br&g
for (var con in dict) {
var div = document.getElementById("content");
var conDiv = document.createElement("div");
conDiv.innerHTML = "<b>" + con + ":</b><br>";
var effectID = dict[con].effect_id;
for (var param in dict[con].params) {
var inp,span = document.createElement("span");
span.innerHTML = " " + param + " ";
conDiv.appendChild(span);
inp = document.createElement("input");
inp.type = "range";
inp.min = vars[effectID][param].min;
inp.max = vars[effectID][param].max;
inp.value = dict[con].params[param];
inp.oninput = function(con,param,val) {
setParam(con,param,val);
}(con,param,this.value);
conDiv.appendChild(inp);
}
div.appendChild(conDiv);
}
for(dict中的var con){
var div=document.getElementById(“内容”);
var conDiv=document.createElement(“div”);
conDiv.innerHTML=“+con+”:
”;
var effectID=dict[con]。效果id;
for(dict[con].params中的变量参数){
var inp,span=document.createElement(“span”);
span.innerHTML=“”+参数+”;
第四条附属物(span);
inp=document.createElement(“输入”);
inp.type=“范围”;
inp.min=vars[effectID][param].min;
inp.max=vars[effectID][param].max;
inp.value=dict[con].params[param];
inp.oninput=函数(con、param、val){
setParam(con、param、val);
}(con,param,该值);
第四条附属物儿童(inp);
}
儿童分部(康迪夫);
}
我的代码怎么了
编辑:我的目标:我有一套我想要改变的音频效果。每个容器(con)通过多个参数控制效果节点。所有这些参数都有不同的最小值和最大值以及它们现在的实际值。通过滑块,我希望能够调用一个函数来更改容器的参数。因此,每个滑块都应该控制一个效果参数。这是因为在循环完成后调用回调,所以变量已更改 通常的技巧是使用一个立即调用的函数,该函数的作用域可以存储变量值:
for (var con in dict) {
(function(con) { // <= creates a scope and a new con variable
var div = document.getElementById("content");
var conDiv = document.createElement("div");
conDiv.innerHTML = "<b>" + con + ":</b><br>";
var effectID = dict[con].effect_id;
for (var param in dict[con].params) {
(function(param){
var inp,span = document.createElement("span");
span.innerHTML = " " + param + " ";
conDiv.appendChild(span);
inp = document.createElement("input");
inp.type = "range";
inp.min = vars[effectID][param].min;
inp.max = vars[effectID][param].max;
inp.value = dict[con].params[param];
inp.oninput = function() {
setParam(con,param,inp.value);
};
conDiv.appendChild(inp);
})(param);
}
div.appendChild(conDiv);
})(con);
}
for(dict中的var con){
(功能(con){//谢谢,但是为什么这个.value没有定义?我的意思是在oninput函数前面的一行我显式地将它设置为一个值,但是如果我执行这个,它就没有定义。我创建了一个提琴来说明我的意思:还有,为什么它要在构造时执行?没有用户输入来处理,所以为什么要调用它?我想你需要inp.value In停止this.value。但是如果您不想立即调用它,请删除(con,param,inp.value)
部分。好的,现在滑块确实调用setParam(),但是con和param参数是错误的:我不确定您的目标,所以我可能是错误的,但您可能想要我刚才编辑的内容?