JQuery / Javascript: массивы - PullRequest
       4

JQuery / Javascript: массивы

1 голос
/ 19 октября 2010

Я начинающий с Javascript / jQuery, и я надеюсь, что кто-то может помочь мне со следующим:

У меня есть простая форма (7 вопросов; 3 переключателя / ответа на вопрос - кроме вопроса 58 возможных вариантов) и на основе выбранных ответов, когда пользователь нажимает «view-advice», я хочу отобразить соответствующие советы (комбинация из 38 возможных советов) под формой.Я дал значения "a", "b", "c", ... значениям радиокнопок, и я собираю их в массив.Часть, где скрипт предупреждает массив, работает нормально.Я не могу понять, где я показываю советы в зависимости от значений в массиве.

Буду признателен за вашу помощь!Спасибо!

Вот код:

<code>
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

})

Ответы [ 3 ]

0 голосов
/ 19 октября 2010

Вы не можете сравнивать массивы таким образом, вам, вероятно, следует либо сравнить каждый элемент 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 голосов
/ 19 октября 2010

Было бы приятно увидеть 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 голосов
/ 19 октября 2010

Вместо того, чтобы проверять равенство, я думаю, что лучший способ - проверить, есть ли каждое из ваших значений в массиве, используя функцию jQuery inArray.

Конечно, это только начало кода. Вероятно, вы могли бы написать функцию для поддержки этого, например, так.

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

и адаптируйте его к существующему сценарию.

...