用 switch 语句替换 for 循环?
最佳答案
您不必遍历所有单选按钮即可找到单击的单选按钮。您可以将单击的元素直接传递给您的函数:
function planeChoice(element) {
// element refers to the clicked radio button
var plane = element.value;
switch (plane) {
//...
}
}
要使其发挥作用,您必须通过 this
到你的函数:
<input type="radio" name="planeButton" value="152"
onclick="planeChoice(this)" />
this
指的是您将事件处理程序附加到的 HTML 元素,因此在本例中它指的是 <input>
元素。
要了解有关事件的更多信息,我建议阅读 http://quirksmode.org 上的文章,从 Introduction to Events 开始和 Early event handlers .
进一步改进的两个建议:
(A) 您可以使用 map (它只是 JavaScript 中的一个普通对象)而不是 switch
判断对应消息的语句:
var map = {
"152": "A small two-place-airplane for flight training",
"172": "The smaller of two four-place airplanes"
// ...
};
map 也更容易维护(扩展)。
获得单选按钮的值后,您可以通过以下方式访问消息:
alert(map[plane]);
您不限于仅存储原始值(如字符串),如果您想做一些更复杂的事情,您还可以存储函数并调用它们。但要了解有关函数以及如何使用它们的更多信息,您应该阅读 JavaScript 指南。
(B) 您可以使用事件委托(delegate),而不是将相同事件处理程序绑定(bind)到每个元素(这可以通过 event bubbling 实现)。 click
事件处理程序附加到 <form>
元素:
<form onclick="planeChoice(event)" ...>
或者更好的是,获取对表单元素的引用并通过 JavaScript 附加事件处理程序:
document.getElementById("myForm").onclick = planeChoice;
传递的事件对象包含有关单击哪个元素的信息:
function planeChoice (event) {
event = event || window.event; // for IE
var target = event.target || event.srcElement; // for IE
if(target.type === "radio") { // if a radio button is clicked
var plane = target.value;
// ... further code
}
}
关于javascript - 关闭 jscript for 循环到 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5365636/