13.07.2012, 09:56
|
Новичок на форуме
|
|
Регистрация: 13.07.2012
Сообщений: 5
|
|
при нажатии на <a.. потеряется
Здравствуйте.Подскажите, пожалуйста
здесь все отлично работает, но сам тега <a> id name lastname vozrastпотеряется
<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.write(user[0]+"<br>"+user[1]+"<br>"+user[2]);
reset;
}
</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>
|
|
13.07.2012, 10:07
|
|
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
Сообщение от f-mobile
|
Здравствуйте.Подскажите, пожалуйста
здесь все отлично работает, но сам тега <a> id name lastname vozrastпотеряется
<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.write(user[0]+"<br>"+user[1]+"<br>"+user[2]);
reset;
}
</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>
|
задача не ясна, что значит "но сам тега <a> id name lastname vozrastпотеряется"
ааа...понял...ну метод write полностью переписывает содержимое страницы, используйте методы DOM или innerHTML какого-нибудь тега (например, span или div)
и что такое reset; в функции fff() ?
Последний раз редактировалось lord2kim, 13.07.2012 в 10:10.
|
|
13.07.2012, 10:28
|
Новичок на форуме
|
|
Регистрация: 13.07.2012
Сообщений: 5
|
|
reset это пи нажатии id или name .. сортируется список и снова показывает. я думал нужна [i]reset[/I
если вам нетрудно напишите как менять write на innerHTML
|
|
13.07.2012, 11:16
|
|
Студент
|
|
Регистрация: 30.04.2012
Сообщений: 1,113
|
|
Сообщение от f-mobile
|
если вам нетрудно напишите как менять write на innerHTML
|
document.body.innerHTML+=user[0]+"<br>"+user[1]+"<br>"+user[2];
но лучше с помощью appendChild
Последний раз редактировалось vadim5june, 13.07.2012 в 13:06.
|
|
13.07.2012, 11:52
|
Профессор
|
|
Регистрация: 31.05.2012
Сообщений: 396
|
|
Сообщение от vadim5june
|
document.body.innerHTML+=user[0]+"<br>"+user[1]+"<br>"+user[2];
|
Так писать обычно не очень хорошо с точки зрания быстродействия, так как эта инструкция считывает всё содержимое <body> и записывает его снова. Лучше для этого использовать appendChild.
|
|
13.07.2012, 13:08
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
И дело не только в этом, в примере ниже обработчик кнопки сработает только один раз (как объяснить этот эффект, сам хотел бы узнать)
<body>
<button id="button">click</button><br>
<script>
document.body.onclick = function () {
this.innerHTML += 'text<br>'
}
document.getElementById('button').onclick = function () {
alert('click')
}
</script>
</body>
|
|
13.07.2012, 13:19
|
|
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
Сообщение от bes
|
И дело не только в этом, в примере ниже обработчик кнопки сработает только один раз (как объяснить этот эффект, сам хотел бы узнать)
<body>
<button id="button">click</button><br>
<script>
document.body.onclick = function () {
this.innerHTML += 'text<br>'
}
document.getElementById('button').onclick = function () {
alert('click')
}
</script>
</body>
|
а так и не нужно делать) для подобных целей придумали div и span)))
|
|
13.07.2012, 13:25
|
|
Студент
|
|
Регистрация: 30.04.2012
Сообщений: 1,113
|
|
Сообщение от bes
|
И дело не только в этом, в примере ниже обработчик кнопки сработает только один раз (как объяснить этот эффект, сам хотел бы узнать)
|
Да вобщем то innerHTML+ это зло -можно использовать только в самых простых случаях и если нет событий
строка document.body.innerHTML+='tratata';
выполняется как document.body.innerHTML='tratata'+document.body.in nerHTML;
то есть вся страница (body) формируется снова-а так как справа в document.body.innerHTML события не входят то они теряются
а если бы Вы написали
<button onclick=alert(3)></button>
то сохранилось бы
Последний раз редактировалось vadim5june, 13.07.2012 в 13:31.
|
|
13.07.2012, 13:35
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от lord2kim
|
а так и не нужно делать) для подобных целей придумали div и span)))
|
Хотелось бы понимать, как это работает: скрипт на странице остается, обработчик onclick у body остаётся и работает, обработчик onclick у кнопки остаётся и не работает (но если задать через атрибут onclick, то будет работать)
Сообщение от vadim5june
|
document.body.innerHTML события не входят то они теряются
|
как понимать "не входят"
Сообщение от vadim5june
|
document.body.innerHTML='tratata'+document.body.in nerHTML
|
'tratata' справа от +
|
|
13.07.2012, 13:42
|
|
Студент
|
|
Регистрация: 30.04.2012
Сообщений: 1,113
|
|
Сообщение от bes
|
как понимать "не входят"
|
в innerHTML входит все что видно нам по alert(document.body.innerHTML)
таким образом все обработчики которые мы сделали скриптами там не видны и не войдут в страницу когда мы будем использовать innerHTML+ а войдут только те обработчики которые мы написали на странице
<button onclick=...
----
'tratata' справа от +
да
Последний раз редактировалось vadim5june, 13.07.2012 в 13:51.
|
|
|
|