多IF';s和ELSE如果';javascript中的s
因此,推送到这个阵列的东西取决于几个无线电设备。我为标准和轮椅座椅准备了这个:多IF';s和ELSE如果';javascript中的s,javascript,arrays,radio-button,push,if-statement,Javascript,Arrays,Radio Button,Push,If Statement,因此,推送到这个阵列的东西取决于几个无线电设备。我为标准和轮椅座椅准备了这个: if(document.getElementById('standardseat').checked) { //Standard seat is checked seatsArray.push(e.posX, e.posY); } else if(document.getElementById('wheelchairseat').checked) { //Wheelchair seat is checked
if(document.getElementById('standardseat').checked) {
//Standard seat is checked
seatsArray.push(e.posX, e.posY);
}
else if(document.getElementById('wheelchairseat').checked) {
//Wheelchair seat is checked
seatsArray.push("Wheelchair " + e.posX, e.posY);
}
这是等效的形式代码:
<input id="standardseat" type="radio" name="seat" value="standard" /> Standard seat
<input id="wheelchairseat" type="radio" name="seat" value="wheelchair" /> Wheelchair seat
标准座椅
轮椅
但我想增加一些与标准/轮椅座椅分开的收音机盒:
<input id="backnave" type="radio" name="area" value="backnave" /> Back Nave
<input id="frontnave" type="radio" name="area" value="frontnave" /> Front nave
<input id="middlenave" type="radio" name="area" value="middlenave" /> Middle nave
后中堂
前中堂
中堂
我希望推动也包括这一点。为了解释,如果用户勾选了“轮椅座椅”和“中堂”,则按钮应输出(“MN,轮椅”+e.posX,e.posY)。是否有任何方法可以实现这一点,而无需手动为每个可能的结果添加很多其他的if(如果是)(我甚至可能想添加第三组广播箱)
谢谢一般来说,当你有很多I/IF if时,你可以考虑用一个开关/case语句替换它们。 现在,这不一定适合您的情况,因为座椅类型与其位置(前/中/后)是不同的
可能有一种比代码更优雅的方法,但我并不完全理解上下文。你在用这个数组做什么?我会用相对较少的
if
语句构建描述椅子的字符串,然后在最后调用push
比如:
var desc = "";
if(document.getElementById('wheelchairseat').checked) {
//Wheelchair seat is checked
desc = "Wheelchair "+desc;
}
if(document.getElementById("backnave").checked) {
desc = "BN, "+desc;
} else if(document.getElementById("middlenave").checked) {
desc = "MN, "+desc;
} else if(document.getElementById("frontnave").checked) {
desc = "FN, "+desc;
}
seatsArray.push(desc + e.posX, e.posY);
这可以很容易地扩展以考虑额外的块组。将
值设置为希望在结果字符串中显示的值。如果需要“MN”,请将值设置为“MN”
然后,不必为每个可能的状态编写if
语句,您可以通过input
对象循环查找要检查的对象
从每个人那里获取所有的输入,就像这样
var chairFormElems = document.getElementById('chairFormId').elements;
var naveFormElems = document.getElementById('naveFormId').elements;
然后循环检查每一个,找到被检查的一个。然后只需输入值
属性即可生成结果字符串。没错,IceDragon,使用多个if/else没有意义,因为每次添加选项时,都必须重写代码。有很多方法可以避免这种情况。这里只有一种方法:
<html><body>
<form>
<p>
<input type="radio" name="seat" onclick="chose(this, 'Standard')" /> Standard seat
<input type="radio" name="seat" onclick="chose(this, 'Wheelchair')" /> Wheelchair seat
</p><p>
<input type="radio" name="area" onclick="chose(this, 'BN')" /> Back Nave
<input type="radio" name="area" onclick="chose(this, 'FN')" /> Front nave
<input type="radio" name="area" onclick="chose(this, 'MN')" /> Middle nave
</p>
</form>
<script>
// make sure to put these in the order you wish them to appear in the output
var selections = { area: '', seat: '' };
var seatsArray = [];
function chose(input, value) {
selections[input.name] = value;
}
// call this function when user clicks the floor plan:
function image_clicked(e) {
var desc = [];
for (var i in selections) if (selections[i] != '') desc.push(selections[i]);
seatsArray.push(desc.join(', ') + ' ' + e.posX, e.posY);
}
</script>
</body></html>
其中“form”是表单标签的ID属性。当用户选择保存该数组时,该数组将被写入文本文件。整个文档将用于将扫描图像上的楼层平面座椅位置转换为数字可移动位置(像素坐标是本阶段的输出)。Thanks@Carl谢谢你。你的挑剔似乎和我的一样强烈“desc=”BN,“+desc;”是否会同时添加“desc”,例如自身和另一个?还是只加上另一个?Thanks@IceDragon两个都是desc的?另一个?呵呵?跟着绳子走。它开始是空的,如果是轮椅座椅,它会在空字符串前面加上一个逗号(这是不必要的,因为一个普通座椅不会注意到它是一个普通座椅),然后,它会在“BN”或“MN”或“FN”中加上一个,注意,普通座椅会有一个不必要的逗号。@IceDragon:我想这就是你要问的:右边(估价)是在赋值之前计算的,因此它只会在执行行之前添加任何值。如果这不能回答您的问题或没有意义,请告诉我。@JGB146啊,是的。这似乎是最好的解释。@George感谢您提到逗号。这是一个在末尾用逗号表示事物的人工制品。他可以添加更多如果需要,可以使用复杂的逻辑来消除它,或者表示可以更改为在“BN”和“轮椅”之间没有消除器的内容。此外,还可以根据最终的期望值调整顺序。
document.getElementById('form').reset();