为命令添加许多

时间:2013-10-14 19:08:16

标签: javascript

嘿,我可以请一点帮助我 好吧,我想添加许多变量,让他们检查数组,但它只是不起作用。 我希望它检查文本框中的所有文本,如果它与数组相同,那么它将提供警报。 这是我的代码

function setValue(){
myVariable= document.forms["myform"]["gname"].value;
myVariable1= document.forms["myform"]["graphic"].value;
myVariable2= document.forms["myform"]["gpc"].value;
myVariable3= document.forms["myform"]["procesor"].value;
myVariable4= document.forms["myform"]["ram"].value;
myVariable5= document.forms["myform"]["os"].value;
var graphic = ["radeon hd", "nvidia"];
var gname = ["prince of persia", "grand theft auto"];
var gpc = ["radeon hd 121", "nvidia 121"];
var procesor = ["intel i7", "intel i5", "intel i3"];
var os = ["Windows 7", "Windows 8", "Windows xp"];
var ram = ["4 Gb", "8 Gb", "12 Gb"];
    var canRun = false;

for(i=0;i<ram.length;i++)
(i=0;i<gpc.length;i++)
(i=0;i<os.length;i++)
(i=0;i<procesor.length;i++)
(i=0;i<gname.length;i++)
(i=0;i<graphic.length;i++)

    {
        if (myVariable5 === os[i] && myVariable4 === ram[i] && myVariable3 === procesor[i] && myVariable2 === gpc[i] && myVariable1 === graphic[i] && myVariable === gname[i]) 
        {   
            canRun = true;  
        }
    }

    if (canRun)
    {   
        alert("yes this game can run");
    }
    else 
    {       
        alert("No, This game cannot run");
    }
};

4 个答案:

答案 0 :(得分:1)

你不能像这样简单地将for循环。每个数组都需要一个单独的循环,或者更简单地说,使用indexOf代替。

答案 1 :(得分:0)

您可以一次运行一个循环,如下所示:

var ok_count = 0;
for(i=0;i<ram.length;i++) {
    (myVariable4 === ram[i]) {
         ok_count++;
         break;
    }
}
for (i=0;i<gpc.length;i++) {
    (myVariable2 === gpc[i]) {
         ok_count++;
         break;
    }
}
if (ok_count == 2) { 
       // MATCH :-D
}
else {
       // NO MATCH :-(
}

答案 2 :(得分:0)

您可以使用类似

的内容
function setValue(){
    var canRun = true,
        accepted = {
            graphic: ["radeon hd", "nvidia"],
            gname: ["prince of persia", "grand theft auto"],
            gpc: ["radeon hd 121", "nvidia 121"],
            procesor: ["intel i7", "intel i5", "intel i3"],
            os: ["Windows 7", "Windows 8", "Windows xp"],
            ram: ["4 Gb", "8 Gb", "12 Gb"]
        };
    for(var i in accepted){
        // If you have modified `Object.prototype`, you should also check
        // `accepted.hasOwnProperty(i)`
        if(accepted[i].indexOf(document.forms['myform'][i].value) === -1) {
            canRun = false;
            break;
        }
    }
    alert(canRun ? "yes this game can run" : "No, This game cannot run");
}

答案 3 :(得分:0)

看起来您正在尝试查看提交的值是否在有效值范围内。只需使用Array.prototype.indexOf

if (graphic.indexOf(myVariable1) >= 0 && ram.indexOf(myVariable2) && ...) {
    canRun = true;
}

上面的代码说:如果graphic数组包含从表单提交的值,请将其标记为有效(并检查其他字段)。

我很喜欢Underscore,你也可以使用它。

if (_.contains(graphic, myVariable1) && _.contains(ram, myVariable2) && ...) {