У меня есть простой выпадающий список, и я хочу сделать так, чтобы, если пользователь выбирает Have a Baby, сообщение менялось на Have a Baby, но для любого другого выбора. Сообщение остается прежним (ничего), но это не работает. Кто-нибудь, пожалуйста, помогите. Пожалуйста, поиграйте с моим jsfiddle.
Вот html<select id="leave">
<option value="5">Get Married</option>
<option onchange="changeMessage()" value="100">Have a Baby</option>
<option value="90">Adopt a Child</option>
<option value="15">Retire</option>
<option value="15">Military Leave</option>
<option value="15">Medical Leave</option>
</select>
<div id="message"></div>
Вот js
function changeMessage() {
document.getElementById("message").innerHTML = "Having a Baby!!";
}
Что-то вроде этого должно сработать
<select id="leave" onchange="leaveChange()">
<option value="5">Get Married</option>
<option value="100">Have a Baby</option>
<option value="90">Adopt a Child</option>
<option value="15">Retire</option>
<option value="15">Military Leave</option>
<option value="15">Medical Leave</option>
</select>
<div id="message"></div>
Javascript
function leaveChange() {
if (document.getElementById("leave").value != "100"){
document.getElementById("message").innerHTML = "Common message";
}
else{
document.getElementById("message").innerHTML = "Having a Baby!!";
}
}
Более короткая и общая версия может быть следующей
HTML
<select id="leave" onchange="leaveChange(this)">
<option value="5">Get Married</option>
<option value="100">Have a Baby</option>
<option value="90">Adopt a Child</option>
<option value="15">Retire</option>
<option value="15">Military Leave</option>
<option value="15">Medical Leave</option>
</select>
Javascript
function leaveChange(control) {
var msg = control.value == "100" ? "Having a Baby!!" : "Common message";
document.getElementById("message").innerHTML = msg;
}
Это не работает, потому что ваш скрипт в JSFiddle выполняется внутри собственной области видимости (см. выпадающий слева "OnLoad").
Один из способов обойти это - привязать обработчик событий в javascript (там, где он должен быть):
document.getElementById('optionID').onchange = function () {
document.getElementById("message").innerHTML = "Having a Baby!!";
};
Другой способ - изменить ваш код для среды fiddle и явно объявить вашу функцию глобальной, чтобы ее мог найти ваш встроенный обработчик событий:
window.changeMessage() {
document.getElementById("message").innerHTML = "Having a Baby!!";
};
легко
<script src="js/libs/jquery-1.8.3.min.js"></script><script>
jQuery.noConflict()(document).ready(function() {
$('#hide').css('display','none');
$('#plano').change(function(){
if(document.getElementById('plano').value == 1){
$('#hide').show('slow');
}else
if(document.getElementById('plano').value == 0){
$('#hide').hide('slow');
}else
if(document.getElementById('plano').value == 0){
$('#hide').css('display','none');
}
});
$('#plano').change();
});
</script>
этот пример показывает и скрывает div при выборе в combobox определенного значения