2014-02-18 2 views
0

У меня есть некоторые divs, которые установлены на display:none; и должны отображать onchange() меню select. Вот HTML в вопрос:дисплей: нет; div не будет отображаться onchange()

<p> 
     <label for="newsletter">Package</label> 
     <select id="package" name="package" onchange="formupdate();"> 
      <option value="individual">Individual</option> 
      <option value="couple">Couple</option> 
      <option value="family">Family</option> 
     </select> 
    </p> 
<div id="famnumdiv" style="display:none;"> 
    <p> 
     <label for="famnum">How Many Members?</label> 
     <input type="text" id="famnum" name="famnum"/> 
    </p> 
</div> 

И тогда функция onChange():

function formupdate() { 
    var selectedPackage = document.getElementById("package").value; 
    if (selectedPackage == 'family') { 
     document.getElementByID('famnumdiv').style.display = "block"; 
    } 
} 

Когда я выбираю Family из select, ничего не происходит. Есть идеи?

EDIT: изменено на if (selectedPackage == 'family') { и это все еще не показывает, что div

+0

Хотя все эти ответы прямо об использовании '=' 'против ==' или '' ===, что условие оценивается как true, то есть в вашем коде есть другие (адресные) проблемы. –

+0

Ошибка 'D',' d' и '=', '==', use: '(selectedPackage == 'family'? Famnumdiv.display = 'block': famnumdiv.display = 'none')' –

ответ

3

ваш второй getElementByID неверен попробовать это getElementById

Javascript чувствителен к регистру

5

Вы присваиваете selectedPackage дважды.

Третья строка должна быть:

if (selectedPackage == 'family') { 
+1

True , но не должно ли всегда иметь выражение 'selectedPackage = 'family''? в этом случае «famnumdiv» появлялся при каждом изменении ... Что заставляет меня думать, что оператор 'if' не является единственным вопросом – Mabedan

+0

@Mabedan, вы правы. –

+0

сделал это изменение, но он все еще не отображает div – KingRichard

1

попробуйте изменить код

function formupdate() { 
    var selectedPackage = document.getElementById("package").value; 
    if (selectedPackage == 'family') { 
     document.getElementByID('famnumdiv').style.display = "block"; 
    } 
} 

Если вы используете selectedPackage = «семья» в, если заявление, то значение для selectedPackage получит набор для выступит с поправкой

2

использовать это, это делает равенство намного лучше

if (selectedPackage === 'family') 
0

Вы назначаете family вместо selectedPackage вместо сравнения.

Кроме того, вы не выбрали выбранный вариант правильно.

var selectedPackage = document.getElementById("package"); 
selectedPackage = selectedPackage.options[selectedPackage.selectedIndex].value; 

И вы не должны использовать встроенные js, добавьте eventListener.

var package = document.getElementById("package"); 
package.addEventListener("change",formupdate,false); 
Смежные вопросы