[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Чудеса JavaScript
zelenuy
<!DOCTYPE html>
<
html>
<
head>
<
meta charset="utf-8">
<
title>Чудеса JavaScript</title>
<
script>
function echo(txt){
document.body.innerHTML += txt+'<br/>';
return false;
}
function foo(){
//Как-то странно работает
//Работает через раз

echo('Привет я foo');
return false;
}
</script>
<
script>
window.onload = function(){
var f = document.getElementById('form');
f.onsubmit = foo;
//echo('Проверка echo');// если раскомментировать, то foo() вообще перестанет работать
};
</
script>
</
head>
<
body>
<
form id="form">
<
input type="submit" value="вывести"><br>
</
form>
</
body>
</
html>

Грешу на innerHTML, так как без него все работает, вообще странное поведение
T1grOK
Ничего удивительного
document.body.innerHTML += txt+'<br/>';

Берет и заменяет весь body и соответственно события "слетают". И тому доказательство, если навешивание события поменять с
echo('Проверка echo');

то событие onsubmit отработает.
Здесь стоит смотреть в сторону appendChild или создать дополнительный тег, в который все через тот же innerHTML добавлять нужный текст, чтоб это не затрагивало форму.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
zelenuy
T1grOK
Да событие затирается ;) но если на прямую залепить атрибут события, то не чего не затирает
f.setAttribute("onsubmit", "return foo();");

:) но есть одна проблемка при таком подходе, нельзя передать в качестве параметра объект
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.