Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.07.2012, 09:56
Новичок на форуме
Отправить личное сообщение для f-mobile Посмотреть профиль Найти все сообщения от f-mobile
 
Регистрация: 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>
Ответить с цитированием
  #2 (permalink)  
Старый 13.07.2012, 10:07
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 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.
Ответить с цитированием
  #3 (permalink)  
Старый 13.07.2012, 10:28
Новичок на форуме
Отправить личное сообщение для f-mobile Посмотреть профиль Найти все сообщения от f-mobile
 
Регистрация: 13.07.2012
Сообщений: 5

reset это пи нажатии id или name .. сортируется список и снова показывает. я думал нужна [i]reset[/I
если вам нетрудно напишите как менять write на innerHTML
Ответить с цитированием
  #4 (permalink)  
Старый 13.07.2012, 11:16
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 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.
Ответить с цитированием
  #5 (permalink)  
Старый 13.07.2012, 11:52
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от vadim5june
document.body.innerHTML+=user[0]+"<br>"+user[1]+"<br>"+user[2];
Так писать обычно не очень хорошо с точки зрания быстродействия, так как эта инструкция считывает всё содержимое <body> и записывает его снова. Лучше для этого использовать appendChild.
Ответить с цитированием
  #6 (permalink)  
Старый 13.07.2012, 13:08
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 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>
Ответить с цитированием
  #7 (permalink)  
Старый 13.07.2012, 13:19
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 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)))
Ответить с цитированием
  #8 (permalink)  
Старый 13.07.2012, 13:25
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 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.
Ответить с цитированием
  #9 (permalink)  
Старый 13.07.2012, 13:35
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 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' справа от +
Ответить с цитированием
  #10 (permalink)  
Старый 13.07.2012, 13:42
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

Сообщение от bes Посмотреть сообщение
как понимать "не входят"
в innerHTML входит все что видно нам по alert(document.body.innerHTML)
таким образом все обработчики которые мы сделали скриптами там не видны и не войдут в страницу когда мы будем использовать innerHTML+ а войдут только те обработчики которые мы написали на странице
<button onclick=...
----
'tratata' справа от +
да

Последний раз редактировалось vadim5june, 13.07.2012 в 13:51.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SyntaxHighlighter подсветка при нажатии faraday Общие вопросы Javascript 3 31.03.2012 23:43
Получение данных строки грида при нажатии сторонней кнопки Allan Stark ExtJS 4 17.11.2011 19:21
Событие onClick при нажатии пункта меню Lex4e Общие вопросы Javascript 1 25.06.2010 18:31
При нажатии и удержании мыши заменяется картинка Webroller Events/DOM/Window 9 26.05.2010 16:00
Как сделать так, чтобы JS при нажатии на кнопку не выполняла запрос со страницы. JSProgrammer Элементы интерфейса 3 18.05.2010 20:18