要让该选择元素控制第一个灯开关,您可以这样做:
<select name="jumpmenu" onChange="lightswitch(1,this.value==='on');">
<option value="on";>Light 1 On</option>
<option value="off";>Light 1 Off</option>
</select>
也就是说,代替硬编码true
作为第二个参数来lightswitch()
测试选择元素的当前值。(请注意,我已将 value 属性更改为更有意义的内容。表达式this.value==='on'
将评估为true
or 或false
。)
在 select 的onChange
属性this
中将引用 select 元素本身。
编辑:要让相同的选择控制多个参数,您可以data-
向选项元素添加一些属性,以便根据需要为每个选项存储尽可能多的额外参数(在这种情况下,我认为您只需要一个额外的参数)。我会将逻辑移出内联属性:
<select name="jumpmenu" onChange="jumpChange(this);">
<option value="">LightFunctions</option>
<option data-switchNo="1" value="on";>Light 1 On</option>
<option data-switchNo="1" value="off";>Light 1 Off</option>
<option data-switchNo="2" value="on";>Light 2 On</option>
<option data-switchNo="2" value="off";>Light 2 Off</option>
<option data-switchNo="3" value="on";>Light 3 On</option>
<option data-switchNo="3" value="off";>Light 3 Off</option>
</select>
function jumpChange(sel) {
if (sel.value === "") return; // do nothing if user selected first option
var whichLight = +sel.options[sel.selectedIndex].getAttribute("data-switchNo");
lightswitch(whichLight, sel.value==='on');
sel.value = ""; // reset select to display the "Light Functions" option
}
演示:http: //jsfiddle.net/N7b8j/2/
在jumpChange(sel)
我添加的函数中,参数sel
将是选择元素(this
从onChange
属性中设置)。“魔法”发生在这一行:
var whichLight = +sel.options[sel.selectedIndex].getAttribute("data-switchNo");
解释该行:sel.options[sel.selectedIndex]
获取对当前选定选项的引用,并.getAttribute("data-switchNo")
获取该选项的data-
属性。将+
属性从字符串转换为数字。