2013-04-11 2 views
0

Хорошо, это действительно был действительно странный вопрос, но это действительно случилось со мной, я написал JS, который работает над IE, но он не работает firefox или chrome.JS, который работает на IE и не работает на chrome и FF

Я надеюсь, что если кто-то может просветить меня, почему это происходит ...

Мой HTML код следующий

<h4>What kind of animals do you like the most?</h4> 
<select id="animalName" name="animalName"> 
    <option selected="selected" disabled="disabled">Which animal is it?</option> 
    <option value="Cat">Cat</option> 
    <option value="Dog">Dog</option> 
    <option value="Lion">Lion</option> 
    <option value="Other">Other</option> 
</select> 
<div id="otherAnimalNameDiv"> 
    <h4>As you picked the other, would you like to write it down to let us know?</h4> 
    <input type="text" name="otherAnimalName" size="40" id="otherAnimalName" /> 
</div> 

И мой JS код следующий:

var animalName = document.getElementById("animalName"); 
    var animalOtherName = document.getElementById("otherAnimalNameDiv"); 

    function animalSelect(){ 
     animalName.onchange = function(){ 
      if (animalName.options.value == "Other"){ 
       animalOtherName.style.display = "block"; 
      } 
     }; 
     animalOtherName.style.display = "none"; 
    } 

window.onload = function() { 
    firstNameFunc(); 
    familyNameFunc(); 
    emailAddressFunc(); 
    passwordFunc(); 
    rewritePasswordFunc(); 
    colorPickerFunc(); 
    animalSelect(); 
    } 

Зачем это работать с IE и не будет в Chrome или FF? ....

При выборе опции «Другой» из тега select он должен установить блокировку div, что происходит в IE, но не FF или хром.

+1

Вы когда-нибудь на самом деле _invoke_ 'animalSelect'? – Zeta

+0

Вы действительно не объяснили, что не работает с вашим кодом. Кроме того, не так уж странно, что некоторые JS-коды могут работать в одном браузере, но не в другом. Он называется [кросс-браузерная совместимость] (https://www.google.com/search?q=cross+browser+compatibility). – Travesty3

ответ

2

Я готов поспорить, что проблема заключается в ваш Условный оператор:

if (animalName.options.value == "Other"){ 

Если вы пытаетесь получить значение выбранного параметра, вы должны попробуйте что-нибудь еще:

if (animalName.options[animalName.selectedIndex].value == "Other"){ 
+0

Простите, на 8 секунд быстрее, чем вы;) В любом случае есть +1. –

+0

Удивительный, он работает сейчас! Спасибо! Не возражаете ли вы объяснить, что произошло? @ _ @ –

+0

OKes, я понял, теперь все понял;) –

0

Ваша попытка получить значение параметра неверна. Оно должно быть:

if(this.options[this.selectedIndex].value == "Other") { 
+0

Он просто добавил это к вопросу, но с тем, как он вызывает функцию (а не как прослушиватель событий), вы не сможете использовать 'this'. – Travesty3

+0

Спасибо также: D –

Смежные вопросы