2010-10-19 23 views
1

我使用Javascript/jQuery的一个初学者,我希望有人能帮助我的以下内容:的jQuery/JavaScript的:阵列

我有一个简单的表格(7题; 3单选按钮/每个问题的答案 - 除了问题5有8种可能的选择),并根据选定的答案,当用户点击“查看建议”时,我想在窗体下方显示相关建议(38种可能的建议的组合)。 我给了单选按钮的“a”,“b”,“c”,...值,我正在将它们收集到一个数组中。 脚本警告阵列的部分工作正常。 根据数组中的值,我无法弄清楚显示建议的部分。

我很感谢您的帮助!谢谢!

下面是代码:

 

var laArray = new Array(); 

$('.button-show-advice').click(function(){ 

    $(":radio:checked").each(function(i){ 
     laArray[i] = $(this).val(); 
     if (laArray == ["a","d","g","j","m","u"]) { 
     $("#advice-container, #advice1, #advice2").show(); // something is wrong here :(
      }; 
    }) 
    alert(laArray) // testing to see if it works 

}) 

+1

请添加html代码 – 2010-10-19 14:47:21

+1

最好将数组声明为:var laArray = []; – jelbourn 2010-10-19 14:58:33

+0

HTML格式: http://jsfiddle.net/tschardak/HQeXH/ – tschardak 2010-10-19 15:51:19

回答

0

而不是测试平等,我认为更好的办法是检查每个值是否是在阵列中使用jQuery inArray功能。

当然,这只是代码的开始。你也许可以写一个函数来支撑它,像这样。

function radioSelected(val) { 
    return ($.inArray(val, laArray) != -1); 
} 

并使其适应您现有的脚本。

+0

我试图添加表单的HTML,但我得到一个错误,说我不能添加那么多没有学分.... – tschardak 2010-10-19 14:58:32

+0

谢谢你的反应,villecoder。 不幸的是,像我这样的初学者,你必须画出它;) 我认为它会工作的最好方式是如果我比较所有可能的阵列/所有可能的组合选择无线电的选择,而不是检查一个一。因为每一个选择都有太多的建议... – tschardak 2010-10-19 15:03:28

0

不能比较数组这样你应该 任一比较2个阵列

function compare_array(array1,array2) { 
    var i; 
    for(i=0;i=array1.length;i++) { 
     if(array1[i]==array2[i]) { 
      return false; 
     } 
    } 
    return true; 
} 

或序列化以可比较的形式的数组的每个元素(逗号分隔例如字符串)

function compare_array(array1,array2) { 
    return array1.join(",")==array2.join(","); 
} 
+0

与序列化相比,好! +1 :) – nekman 2010-10-19 15:06:48

+0

虽然不是很可靠,但我会在任何情况下使用它 – dvhh 2010-10-19 15:09:56

0

很高兴看到HTML代码。但我猜你想要做这样的事情:


var laArray = []; 
var compareValues = function(arr1, arr2) { 
    $(arr1).each(function(index, el) { 
    if(el !== arr2[index]) { 
    return false; 
    } 
    }); 
    return true; 
}; 

$('.button-show-advice').click(function(){ 
    $(":radio:checked").each(function(i){ 
     laArray.push($(this).val());   
    }); 
    if(compareValues(laArray,["a","d","g","j","m","u"])) { 
     $("#advice-container, #advice1, #advice2").show(); 
    } 
}); 

编辑:更新的代码,忘了}); ...

+0

HTML(表格)第1部分: – tschardak 2010-10-19 15:04:44

+0

我非常感谢您的帮助,Nisse!但是,这个解决方案似乎没有工作。因为我不能在这里发布HTML我不知道我在做什么错... – tschardak 2010-10-19 15:12:01

+0

我忘了失踪});在每个循环结束时。尝试再次复制该示例。 – nekman 2010-10-19 15:17:42