我添加数组时打破了这个JS

时间:2014-04-12 06:42:56

标签: javascript arrays

当每个变量都是单个变量时,此代码有效。当我把所有东西放在数组中时,它不起作用。这是两个带数字的下拉列表。每个列表中的每个数字最终将根据这两个数字显示另一个数字(我不知道该怎么做)。

我在数组上找到的几乎所有内容都是使用for语句。

这是我的HTML代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="pwh.js"></script>
<style type="text/css">
<!--
#apDiv1 {
position:absolute;
left:10px;
top:15px;
width:297px;
height:59px;
z-index:1;
color:000;
}
-->
</style>
</head>

<body>

<div id="apDiv1">
<p>
<select name="marked" id="marked" onchange="checkdata(this); ">
<option value="">SELECT</option>
<option>201</option>
<option>206</option>
<option>224</option>
<option>319</option>
</select>
<select name="marked1" id="marked1" onchange="checkdata(this); ">
<option>SELECT</option>
<option>201</option>
<option>206</option>
<option>224</option>
<option>319</option>
</select>
<button onClick="myFunction()">Calculate</button>
<p id="demo"></p>

</div>
<script type="text/javascript">

function myFunction(){
var select1 = parseInt(document.getElementById("marked").value);
var select2 = parseInt(document.getElementById("marked1").value);
if (select1 == a && select2 == b)
 {
    document.getElementById("demo").innerHTML = "it works";
}}


</script>
</body>
</html>

这是js文件:

var a=["201","206","224"];
var b=["319","333","354","355","c355"];
var c=["356","a356","357","a357","413","443","a444"];
var d=["511","512","513","514","535"];
var e=["7004","7005","7039","710","712"];
var f=["6009","6010","6070"];
var g=["6005","6051","6063","6101","6151","6201","6351","6951"];
var h=["5456"];
var i=["5454"];
var j=["5154","5254"];
var k=["5086"];
var l=["5083"];
var m=["5052","5652"];
var n=["5005","5050"];
var o=["3004","Alc-3004"];
var p=["2219"];
var q=["2014","2036"];
var r=["1100","3003","Alc-3003"];
var s=["1060","1070","1080","1350"];

然后我将根据所选的数字显示更多其他数字的变量。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

将数字与数组进行比较是没有用的。如果需要检查数组是否包含某些值,可以执行以下操作:

var select1 = document.getElementById("marked").value;
var select2 = document.getElementById("marked1").value;
if (a.indexOf(select1) > -1 && b.indexOf(select2) > -1) {...}

由于您在数组中有字符串,因此删除了parseInt()

MDN的{p> Array.indexOf()。请注意,IE&lt; 9。

中不支持此方法

修改

如果您正在实施像Aluminum filler metal selection chart这样的数据结构,我更倾向于采用略有不同的方法。

  • 将行标题分组的合金放在option的{​​{1}}处。
  • 对于第二个select,反转第一个。{/ li>
  • 创建一个select对象,该对象有两个属性:data [3D Array] 和quality [2D数组]。
    • filler表示图表中的行和quality[]列。
    • 每个quality[][]都是一个数组,其中包含两种选定基础合金的所有“质量替代品”。
  • quality[][]表示行,每行包含一组合适的填充材料。

这是数据结构的图像。 (filler[]。)

Data structure

请检查a live demo at jsFiddle以了解如何构建数据。 (小提琴中的base1[0] === base2[C] - base1[R] === base2[0]已经填充了上面链接的ESAB图表的最后六行中的值。)