替换循环切换语句以某种方式?关闭jscript循环切换语句
回答
您不必遍历所有单选按钮来查找单击的单选按钮。您可以直接通过点击的元素到你的函数:
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。
进一步改进两个建议:
代替switch
语句来确定相应的消息(A)可以使用一个地图(这是在JavaScript中只是一个普通的对象):
var map = {
"152": "A small two-place-airplane for flight training",
"172": "The smaller of two four-place airplanes"
// ...
};
地图也更容易维护(扩展)。
一旦你的单选按钮的值,你可以访问消息:
alert(map[plane]);
您不限于只存储原始值(如字符串),您还可以存储功能,并呼吁他们如果你想做一些更复杂的事情。但要了解更多关于函数以及如何使用它们的信息,您应该阅读JavaScript指南。
(B)您可以使用事件委派代替相同事件处理程序绑定到每一个元素(这是通过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
}
}
我可以建议你尝试使用jQuery吗?这是一个有用的(和流行的)JavaScript库,可以帮助减少和简化您所需的代码。
例如,上述代码可以简化此jQuery中:
$('#myForm input:radio').click(function(){
switch (this.value) {
case "152":
alert("A small two-place-airplane for flight training");
break;
// More Options go here...
default:
alert("Error in JavaScript function planeChoice");
break;
}
});
它也将消除需要在每个单选按钮使用点击处理程序。
那么,从技术上讲,每个单选按钮都附带一个点击处理程序。但我认为你的意思是说没有在HTML中将它附加到每个元素上。 –
是的,这是正确的。感谢Felix的澄清。 – Wireblue
- 1. 循环切换语句
- 2. 循环切换语句
- 3. While循环的C++切换语句
- 4. swift 1.2如果循环切换语句
- 5. 似乎无法循环切换语句
- 6. while循环,开关语句
- 7. PHP中的循环内部切换语句
- 8. Do-While循环内的切换语句不会退出
- 9. Java在“无效输入”上循环切换case语句
- 10. 中断语句不在循环内或在C中切换
- 11. 将开关切换为“if-else”语句
- 12. 关闭DB语句
- 13. 关闭PDO语句
- 14. jquery切换关闭
- 15. jquery关闭切换
- 16. Javascript切换关闭
- 17. 虽然循环与开关语句
- 18. 开关语句循环通过
- 19. 开关语句与前哨循环
- 20. 开关/ if语句打破for循环
- 21. 循环while语句
- 22. 循环IF语句
- 23. Python循环语句
- 24. while循环语句
- 25. 循环if语句
- 26. SQLite循环语句?
- 27. PHP循环语句
- 28. 循环if语句
- 29. Bash:if语句循环
- 30. 关闭,for循环
你为什么要删除大部分原始问题?这非常好,现在在编辑/缩短的问题中看到@菲利克斯的答案看起来很奇怪。 –
在这种形式下,这个问题无论如何都没有多大意义。 'switch'和'for'循环有不同的目的。一旦通常不能交换它们。如果我的回答没有帮助你,你应该指出并澄清你的问题。但不要专注于你认为是解决问题的方法。 –