Цитата:
<body>
<button id="button">click</button><br>
<script>
document.body.onclick = function () {
document.body.innerHTML += 'text<br>';
alert(document.body.innerHTML);
}
document.getElementById('button').onclick = function () {
alert('click')
}
</script>
</body>
|
Цитата:
<!DOCTYPE html>
<html><head><title></title></head><body>
<script type="text/javascript">
var user = [[1,'name1', 'lastname1', 'vozrast1'],[2, 'name2', 'lastname2', 'vozrast2'],[3, 'name3', 'lastname3', 'vozrast3']];
var frag=document.createDocumentFragment(), cns=frag.childNodes;
for (var i=0; i<user.length; i++) {
frag.appendChild(document.createTextNode(""));
frag.appendChild(document.createElement("br"));
}
function fff(i) {
function sName(a, b) {
if (a[i] > b[i]) return 1;
else if (a[i] < b[i]) return -1;
else return 0;
}
user.sort(sName);
for (i=0; i<user.length; i++)
cns[2*i].textContent=user[i];
document.getElementById("result").appendChild(frag.cloneNode(true));
}
</script>
<a href="#" onClick="fff(0)">id</a>
<a href="#" onClick="fff(1)">name</a>
<a href="#" onClick="fff(2)">lastname</a>
<a href="#" onClick="fff(3)">vozrast</a>
<div id="result"></div>
</body></html>
|
Цитата:
когда выполнился первый раз скрипт то у нас появилось два обработчика на элементах body и button эти обработчики не здесь на странице располагаются а записываются во внутренние таблицы интерпретатора javascript когда мы выполняем команду innerHTML+ то элемент body не трогаем так как только внутри меняем а элемент button заменяем на новый но при этом указатель обработчика указывает на старый button(который у нас удалился) и не срабатывает но еще мы перезаписываем снова тот же скрипт-но он не выполняется-поэтому события не перепишутся |
Да, это наверное может объяснить ситуацию: при изменении содержимого body всё, что в тегах <script></script> внутри этого body заново не анализируется.
Решением может стать переназначение обработчиков (ну или как уже сказали не стоит это вообще использовать).
<body>
<button id="button">click</button><br>
<script>
document.body.onclick = function () {
document.body.innerHTML += 'text<br>';
document.getElementById('button').onclick = function () {
alert('click')
}
}
document.getElementById('button').onclick = function () {
alert('click')
}
</script>
</body>
|
Цитата:
inerrHTML+ лучше не использовать |
Цитата:
|
попробуй так после
<a href="#" onClick="fff(3)">vozrast</a> добавь <div id="d1"></div> и в скрипте
document.getElementById('d1').innerHTML=user[0]+"<br>"+user[1]+"<br>"+user[2];
|
пробовал не получается
<div id="d1"> <a href="#" onClick="fff(0)">id</a> <a href="#" onClick="fff(1)">name</a> <a href="#" onClick="fff(2)">lastname</a> <a href="#" onClick="fff(3)">vozrast</a> </div> <script type="text/javascript"> var user = [[1,'name1', 'lastname1', 'vozrast1'],[2, 'name2', 'lastname2', 'vozrast2'],[3, 'name3', 'lastname3', 'vozrast3']]; function fff(i){ function sName(a, b) { if (a[i] > b[i]) return 1; else if (a[i] < b[i]) return -1; else return 0; }user.sort(sName); document.getElementById('d1').innerHTML+=user[0]+"<br>"+user[1]+"br>"+user[2]; reset; } </script> |
Цитата:
<div id="d1"></div> <a href="#" onClick="fff(0)">id</a> |
так и не получилось
|
| Часовой пояс GMT +3, время: 13:15. |