如何解决如何将用户的输入值放入JS数组?
| 我为用户提供了将自己的值输入6个输入字段的功能,其中一些或全部可能留为空白。我已经有一个填充有默认值的数组。如何将用户的值放入该数组中,以便对其进行计算? 用户可以使用提供的值或输入自己的值。提供的值部分工作正常。我现在为用户添加了添加自己的值的功能(HTML的下部)。 <table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" width=\"100%\">
<tr>
<td class=\"alignright\">
<form id=\"form2\">
<select class=\"displayLength\" name=\"ratio\" size=\"6\">
<option value=\'\'>Choose:</option>
<option value=\'sc10_4x4\'>SC10 4x4: 58,60,62,93</option>
<option value=\'sc10\'>SC10: 75,78,81,84,87</option>
<option value=\'sc8\'>SC8: 50,52,54</option>
<option value=\'b44\'>B44: 72,75,84</option>
<option value=\'b4t4\'>B4,T4: 72,87</option>
<option value=\'gt2\'>GT2: 54,55,56</option>
</select>
</td></tr>
//这部分是新的:
<tr><td>
Alternate spur values:<br><br>
<input class=\"display\" type=\"number\" size=\"14\" value=\"\" name=\"spur1\">
<input class=\"display\" type=\"number\" size=\"14\" value=\"\" name=\"spur2\">
<input class=\"display\" type=\"number\" size=\"14\" value=\"\" name=\"spur3\"><br><br>
<input class=\"display\" type=\"number\" size=\"14\" value=\"\" name=\"spur4\">
<input class=\"display\" type=\"number\" size=\"14\" value=\"\" name=\"spur5\">
<input class=\"display\" type=\"number\" size=\"14\" value=\"\" name=\"spur6\">
</td></tr>
<tr>
<td class=\"alignright\">
<input id=\"buttonNewRatios\" class=\"buttPress2\" type=\"button\" value=\"Alternates\"><br><br>
<textarea name=\"moreRatios\" cols=\"42\" rows=\"8\"></textarea>
</td></tr></form></table>
这是我遇到问题的Javascript部分。我不知道如何将用户值合并到交换机中,以便其余代码可以运行这些值。我通过JSHint.com运行了代码,并通过了。但是,没有结果显示。
function gearSpurs(ratio) {
var form = document.getElementById(\'formGearRatio\');
var spur1 = form.elements.spur1.value,spur2 = form.elements.spur2.value,spur3 = form.elements.spur3.value,spur4 = form.elements.spur4.value,spur5 = form.elements.spur5.value,spur6 = form.elements.spur6.value;
var spurs = [];
switch (ratio) {
case \'sc10_4x4\':
spurs = [\'58\',\'60\',\'62\',\'93\'];
break;
case \'sc10\':
spurs = [\'75\',\'78\',\'81\',\'84\',\'87\'];
break;
case \'sc8\':
spurs = [\'50\',\'52\',\'54\'];
break;
case \'b44\':
spurs = [\'72\',\'75\',\'84\'];
break;
case \'b4t4\':
spurs = [\'72\',\'87\'];
break;
case \'gt2\':
spurs = [\'54\',\'55\',\'56\'];
break;
default:
spurs = [spur1,spur2,spur3,spur4,spur5,spur6];
break;
}
return spurs;
}
如何使spur1 ... 6正确合并到switch语句中? (此代码已在iPhone和Android环境中使用。)与其他功能相去甚远。)
解决方法
您可以在switch语句之前添加它们,如下所示:
spurs = [spur1,spur2,spur3,spur4,spur5,spur6];
然后在您的切换案例中更改语句以使用将添加到数组末尾的push函数:
spurs.push([\'58\',\'60\',\'62\',\'93\']);
另外,您可以不使用开关,并使用push这样在switch语句后添加6个值:
spurs.push([spur1,spur6]);
, 编辑:根据您接受的答案,您现在似乎想返回一个包含2个数组的数组。一种带有预定义的比率,另一种带有用户定义的马刺。
如果正确,函数将变得更加简单:
var ratios = {
sc10_4x4: [\'58\',\'93\'],sc10: [\'75\',\'78\',\'81\',\'84\',\'87\'],sc8: [\'50\',\'52\',\'54\'],b44: [\'72\',\'75\',\'84\'],b4t4: [\'72\',gt2: [\'54\',\'55\',\'56\']
};
function gearSpurs(ratio) {
var form = document.getElementById(\'formGearRatio\'),spur1 = form.elements.spur1.value,spur2 = form.elements.spur2.value,spur3 = form.elements.spur3.value,spur4 = form.elements.spur4.value,spur5 = form.elements.spur5.value,spur6 = form.elements.spur6.value;
return [ [spur1,spur6],ratios[ratio] ];
}
您的表单标签不平衡。只需将整个<table>
和ѭ8包起来即可。 (您不能以一个<td>
开头一个表格,而不能以另一个one结尾。)
<form id=\"form2\">
<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" width=\"100%\">
<tr>...</tr>
<tr>...</tr>
<tr>...</tr>
</table>
</form>
我没有看到ID为formGearRatio
的任何元素。
您可以重新编写如下代码来简化代码:
var ratios = {
sc10_4x4: [\'58\',sc10: [\'75\',sc8: [\'50\',b44: [\'72\',b4t4: [\'72\',gt2: [\'54\',\'56\']
};
function gearSpurs(ratio) {
if (ratios[ratio]) {
return ratios[ratio];
} else {
var form = document.getElementById(\'formGearRatio\'),spur6 = form.elements.spur6.value;
return [spur1,spur6];
}
}
, 我唯一发现您的代码有问题的地方是,您正在尝试查找一个名为formGearRatios的表单,但该表单的实际名称为form2。如果更改该行,其余的将在我的测试中起作用(如果用户未选择任何内容,它将使用备用输入中的值)。
作为注释,我还必须以某种方式进行编辑,以调用您的函数并检索ratio的值,因此,假设您的完整代码已正确执行此操作,则唯一的问题就是表单ID。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。