2013-10-08 4 views
0

У меня есть небольшой скрипт, который делает несколько проверку на двух скрытых полей ввода:Multiple оповещения Javascript

function checkfs() 
{ 
var rating1 = (document.getElementById("rating").value); 
var rating2 = (document.getElementById("rating").value); 
var rating3 = (document.getElementById("rating").value); 
var check1 = (document.getElementById("countpl").value); 
var check2 = (document.getElementById("countpl").value); 
var check3 = (document.getElementById("countpl").value); 

    if (rating3 == 3 && check3 > 22 || check3 < 19){ 
     alert("message 1"); 
     window.location.href = 'myteam.php';} 

else if (rating2 == 2 && check2 > 21 || check2 < 18){ 
     alert("message 2"); 
     window.location.href = 'myteam.php';} 

else if (rating1 == 1 && check1 > 20 || check1 < 17){ 
     alert("message 3"); 
     window.location.href = 'myteam.php';}  

else {return true;}  
    }  
    window.onload = checkfs; 

HTML

<input name="countpl" id="countpl" type="hidden" value="<?php echo $row_checkfs['count(f_player.id)']; ?>"/> 
<input name="rating" id="rating" type="hidden" value="<?php echo $row_checkfs['rating']; ?>"/>         

Я не могу понять, как визуализировать правильное оповещения в зависимости от тип контроля, который был сделан. На данный момент я всегда вижу «alert (« message 1 »)« какая бы ни была проблема, которая была найдена. Я хочу, чтобы сообщение 1 появилось, если рейтинг3 == 3 & & check3> 22 || check3 < 19, сообщение 2 появится, если рейтинг2 == 2 & & check2> 21 || check2 < 18 и т. д. Как мне изменить код, чтобы получить этот результат?

+1

звонки на '.getElementById()' ... вы получаете то же "ID" значение 3 раза , Зачем? В любом случае возвращаемое значение этого вызова является элементом DOM, а сравнение элемента DOM с номером не имеет смысла. – Pointy

+1

То, как вы это делаете, 'rating1',' rating2' и 'rating3' будет иметь одинаковое значение. То же самое с 'check1',' check2' и 'check3'. – Bucket

ответ

3

Попробуйте это:

function checkfs() 
{ 
var rating = (document.getElementById("rating").value); 
var check = (document.getElementById("countpl").value); 
alert("rating="+rating+" - Check="+check); 
    if (rating == 3 && (check > 22 || check < 19)){ 
     alert("message 1"); 
     window.location.href = 'myteam.php';} 

else if (rating == 2 && (check > 21 || check < 18)){ 
     alert("message 2"); 
     window.location.href = 'myteam.php';} 

else if (rating == 1 && (check > 20 || check < 17)){ 
     alert("message 3"); 
     window.location.href = 'myteam.php';}  

else {return true;}  
    }  

Я добавил предупреждение, чтобы увидеть фактические значения.

Я также использовал 2 переменные вместо 6 и добавил скобки в условии «или».

Я думаю, что ваша главная причина неудачи - это скобки в «или» состоянии.

Вы должны рассмотреть теорию о приоритете операторов.

+0

Спасибо, работает как charme ;-) – blips

1

попробовать

<script> 
function checkfs() 
{ 
var rating = (document.getElementById("rating").value); 
var check = (document.getElementById("countpl").value); 

if (rating == 3 && (check > 22 || check < 19)){ 
alert("message 1"); 
window.location.href = 'myteam.php'; 
} 

else if (rating == 2 && (check > 21 || check < 18)){ 
alert("message 2"); 
window.location.href = 'myteam.php'; 
} 

else if (rating == 1 && (check > 20 || check < 17)){ 
alert("message 3"); 
window.location.href = 'myteam.php'; 
} 

else {return true;}  
}  
window.onload = checkfs; 
</script> 
1

Также рекомендуется использовать функции для повторяющихся задач,

function checkfs() 
{ 
    var rating = (document.getElementById("rating").value); 
    var check = (document.getElementById("countpl").value); 
    alert("rating="+rating+" - Check="+check); 
    if (rating == 3 && checkThis(check,19,22)){ 
     alert("message 1"); 
     window.location.href = 'myteam.php';} 

    else if (rating == 2 && checkThis(check,18,21)){ 
     alert("message 2"); 
     window.location.href = 'myteam.php';} 

    else if (rating == 1 && checkThis(check,17,20)){ 
     alert("message 3"); 
     window.location.href = 'myteam.php';}  

    else {return true;}  
} 

function checkThis(tocheck, min, max) 
{ 
    return tocheck<min || tocheck>max; 
} 
Смежные вопросы