Error, почти 404
Написал вот код:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script>
window.onload=function(){
var q = document.getElementsByName('q');
for (var i=0; i < q.length; i++){
if (q[i].innerHTML == '1'|'2'){
document.getElementById('gofor').onclick=function(){
alert ('не прокатило');
}
}
else
document.getElementById('gofor').onclick=function(){
alert('прокатило');
}
}
}
</script>
</head>
<body>
<a name="q">3</a><br>
<a name="q">4</a><br>
<a name="q">5</a><br>
<a name="q">6</a><br>
<a name="q">7</a><br>
<input type="button" id="gofor" value="Тык">
</body>
</html>
Проблема заключается в следующем: убрал из списка <a>, в которых были цифры 1 и 2, но скрипт все равно срабатывает так, будто они там присутствуют. Подскажите, пожалуйста, где ошибка? На выходе взависимости от присутствия определенных элементов внутри тегов <a></a> хотел сделать разные функции при клике на кнопку. Спасибо за внимание. :thanks: |
а нука, что даёт это?
var log=[];
// innerHTML
[ "3","4","5","6","7"].forEach( function( a ){ log.push( Boolean( a == '1'|'2' ) ); } )
alert( log.join(",") ) // все TRUE
ну, понятно, что ошибка на линии 9 |
Viral, что это за условие такое?
q[i].innerHTML == '1'|'2' Бивас, тест
if ('1' == '1'|'2') alert('1. Ok')
if ('2' == '1'|'2') alert('2. Ok')
if ('3' == '1'|'2') alert('3. Ok')
|
|
эм...если я правильно понял то, что я сделал, то это для всех q из получившегося массива, равных 1 или 2 выполняется .....
поправьте, пожалуйста, если я ошибся... |
Viral, зачем в условии используется побитовый оператор?
Цитата:
|
Цитата:
if (q[i].innerHTML == '1' || q[i].innerHTML == '2') {...}
|
Понял, в чем ошибка, но как исправить не знаю, подскажите, пожалуйста...
Ошибка в том, что скрипт добавляет onclick в инпут в зависимости от того, какой последний элемент массива. Что необходимо исправить, чтобы функция при наличии определенных элементов в массиве срабатывала независимо от их положения в нем? |
Цитата:
|
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script>
window.onload=function(){
var q = document.getElementsByName('q');
for (var i=0; i < q.length; i++){
if (q[i].innerHTML == '1'|| q[i].innerHTML =='2'){
document.getElementById('gofor').onclick=function(){
alert ('не прокатило');
};
return;
};
};
document.getElementById('gofor').onclick=function() {alert("Прокатило")};
}
</script>
</head>
<body>
<a name="q">3</a><br>
<a name="q">4</a><br>
<a name="q">5</a><br>
<a name="q">6</a><br>
<a name="q">7</a><br>
<input type="button" id="gofor" value="Тык">
</body>
</html>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script>
window.onload=function(){
var q = document.getElementsByName('q');
for (var i=0; i < q.length; i++){
if (q[i].innerHTML == '1'|| q[i].innerHTML =='2'){
document.getElementById('gofor').onclick=function(){
alert ('не прокатило');
};
return;
};
};
document.getElementById('gofor').onclick=function() {alert("Прокатило")};
}
</script>
</head>
<body>
<a name="q">1</a><br>
<a name="q">2</a><br>
<a name="q">3</a><br>
<a name="q">4</a><br>
<a name="q">5</a><br>
<a name="q">6</a><br>
<a name="q">7</a><br>
<input type="button" id="gofor" value="Тык">
</body>
</html>
|
trikadin, то, что надо, спасибо!
}; return; }; объясните, пожалуйста, эта строчка что делает? |
Завершает выполнение ф-ции. Соответственно, присвоения
document.getElementById('gofor').onclick=function() {alert("Прокатило")};
не произойдёт. Если же элементов с innerHTML 1 или 2 не встретилось, то return не сработает, и ф-ция не завершится. А вообще, return возвращает значение ф-ции) |
Спасибо еще раз
|
| Часовой пояс GMT +3, время: 02:58. |