JavaScript:我有一个数组。我想检查第一个元素是否是字段集

时间:2010-10-23 04:38:36

标签: javascript html firefox dom google-chrome

好的,所以这是我原来的问题。您不必阅读它,但如果有帮助:Firefox thinks <fieldset> is a form element; Chrome doesn't

基本上,Firefox和IE将我的HTML中的字段集计为我的数组中的一个元素,这会搞砸一切。但Google Chrome不会将字段集计为数组元素。我试图通过设置新数组来解决问题,如果浏览器计算字段集,并设置不同的方式,如果它。这是我的代码。我认为问题在于if语句。

var $ = function (id) { return document.getElementById(id); }

function check() {
var x = $("myForm");

var user = new Array();
var type = x.elements[0].type;
    if (x.elements[0].nodeName=="fieldset") {
    user[0] = x.elements[1].value;
    user[1] = x.elements[3].value;
    user[2] = x.elements[5].value;
    user[3] = x.elements[2].value;
    user[4] = x.elements[4].value;
    user[5] = x.elements[6].value;
} else {
    user[0] = x.elements[0].value;
    user[1] = x.elements[2].value;
    user[2] = x.elements[4].value;
    user[3] = x.elements[1].value;
    user[4] = x.elements[3].value;
    user[5] = x.elements[5].value;
}

var answers = new Array();
answers[0] = "sample1";
answers[1] = "sample2";
answers[2] = "sample3";
answers[3] = "sample4";
answers[4] = "sample5";
answers[5] = "sample6";

var display = new Array();
for (var i=0;i<6;i++) {
    if (user[i] == "") {
        display[i] = "You entered nothing.";
        }
    else if (user[i] == answers[i]) {
        display[i] = "Correct!";
        }
    else {
        display[i] = "Wrong. The correct answer is \"" + answers[i] + "\".";
        }
    }
alert(display[0] + "\n" + display[1] + "\n" + display[2] + "\n" + display[3] + "\n" + display[4] + "\n" + display[5]);
}

1 个答案:

答案 0 :(得分:0)

您遇到的问题主要是因为nodeName 通常返回大写文本(取决于浏览器),并且您将其与小写{{进行比较1}}。为了使其一致,您应该使用字符串的fieldset函数。

关于条件:我认为更优雅的方法是创建一个没有toLowerCase的新filtered数组并提交按钮。

最后,你创建数组的方式涉及到太多的输入。

我建议您使用 literal notation 创建<fieldset>Arrays

[Demo] 点击预览

Objects