javascript для… in + if-test (внутри переключателя внутри формы) - PullRequest
0 голосов
/ 30 августа 2011

У меня есть вопрос в форме, спрашивающий, употреблял ли ты алкоголь, наркотики, ни то, ни другое, "777", "999".

алкоголь: вопрос 2;наркотики: вопрос 3;оба: вопросы 2 + 3;ни "777", ни "999": вопрос 4.

У меня есть настройка прослушивания jquery change () (и она работает), и у меня есть настройка оператора switch, и она в основном работает, кромедля neither||"777"||"999".Внутри case "neither…" у меня есть массив vices и цикл for…in.Я предполагаю, что for…in функционирует подобно / аналогично php foreach.

Мне нужно определить, является ли вопрос не уже inactive, прежде чем скрывать его и установить его значение не применимо (поэтому я знаю, что это было целенаправленно, а не оставлять пустым).

case "neither" || "777" || "999":
    var vices = new Array('alcohol','drugs');
    for ( vice in vices ) {
        if ( $("ul#vice").hasClass("inactive") == false ) {
            $("ul#vice").append('<input name="'+vice+'" type="radio" value="not applicable" checked="checked" />');
            $("ul#vice").delay(250).queue( function() {$(this).addClass("inactive");queue()} );
        }
    }

Я думаю, что проблема как-то связана с $("ul#vice"), но яТочно сказать не могу.(Я пробовал $("ul#"+vice), но это тоже не сработало).

Вопрос выглядит так:

.inactive{display:none; z-index:-5}

#

<ul id="alcohol" class="inactive">How many alcoholic drinks do you have?
    <li><input name="alcohol" type="text" maxlength="2" /><span id="alcohol" class="inactive"></span></li>
    <li><input name="alcohol" type="radio" value="777" />Don't know</li>
    <li><input name="alcohol" type="radio" value="999" />Prefer to not answer</li>
    <input name="alcohol" type="radio" value="not applicable" checked="checked" />
</ul>

Спасибозаранее!

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

Вы ошибаетесь, предполагая, что for...in похож на foreach ...

мой предыдущий ответ. Циклы JavaScript: для ... в сравнении с

1 голос
/ 30 августа 2011

Ну, быстрый поиск расскажет вам, как ... фактически работает: http://w3schools.com/js/js_loop_for_in.asp

Вам нужно:

for (i=0; i<vices.length; i++) { 
    var vice = vices[i]; ...
} 

И поскольку это переменная, $("ul#" + vice) на самом деле является правильным.

...