Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос по ООП вызов функции
 
 автор: serenya1983   (04.08.2010 в 03:50)   письмо автору
 
 

Подскажите в следующей ситуации:
Есть, например код

function move_div()
{
    /*
     Тут создаётся div
    */
  div.innerHTML='<A HREF='javacript:void(0);' onclick=''>Закрыть</A>";
  function click_close() {
    //тут уничтожение созданного div
  }
  
}

Вопрос как в onclick='' ссылки вызвать click_close() ???

  Ответить  
 
 автор: АЯ   (04.08.2010 в 06:08)   письмо автору
 
   для: serenya1983   (04.08.2010 в 03:50)
 

Пользуйтесь DOM-методами создания тегов, а не "тупым" прописыванием innerHTML - и всё у Вас получится.

Например так:
var lnk = document.createElement ('A'), txt = document.createTextNode ('Закрыть');
with (lnk) {href = 'javascript: void (0)'; onclick = click_close; appendChild (txt)}
div.appendChild (lnk);

  Ответить  
 
 автор: psychomc   (04.08.2010 в 10:15)   письмо автору
 
   для: АЯ   (04.08.2010 в 06:08)
 

Обратите внимание, что использование оператора with значительно замедлит работу кода. Если скорость работы является критичной, не используйте этот оператор.

только что прочитал в справочнике

  Ответить  
 
 автор: АЯ   (04.08.2010 в 15:24)   письмо автору
 
   для: psychomc   (04.08.2010 в 10:15)
 

Ага...
Только правильнее будет не категоричное "значительно замедлит", а "замедляет в большинстве браузеров".
В браузере MSIE, наоборот, использование with ВСЕГДА ускоряет обработку.
Можете проверить:
<script>
var ST0 = new Date ().valueOf ();  for (var j = 0; j < 100000; j++) with (Math)
{var x = cos (3 * PI) + sin (LN10); var y = tan (14 * E)}
var ST1 = new Date ().valueOf (); for (var j = 0; j < 100000; j++)
{var x = Math.cos (3 * Math.PI) + Math.sin (Math.LN10); var y = Math.tan (14 * Math.E)}
var ST2 = new Date ().valueOf (); for (var j = 0; j < 100000; j++) with (Math)
{var x = cos (3 * PI) + sin (LN10); var y = tan (14 * E)}
var ST3 = new Date ().valueOf (); for (var j = 0; j < 100000; j++)
{var x = Math.cos (3 * Math.PI) + Math.sin (Math.LN10); var y = Math.tan (14 * Math.E)}
var ST4 = new Date ().valueOf ();
alert ('c with\t' + (ST1 - ST0) + '\t' + (ST2 - ST1) + '\nБЕЗ\t' + (ST3 - ST2) + '\t' + (ST4 - ST3));
</script>

Ну и, полагаю, что в рассматриваемой задаче скорость совершенно не критична.

  Ответить  
 
 автор: psychomc   (04.08.2010 в 15:43)   письмо автору
 
   для: АЯ   (04.08.2010 в 15:24)
 

у меня получилось в firefox 3 с with быстрее, в ie6 и opera10 примерно одинаково...

  Ответить  
 
 автор: АЯ   (04.08.2010 в 15:48)   письмо автору
 
   для: psychomc   (04.08.2010 в 15:43)
 

Это потому, что я ступил.
Переделайте и проверьте заново:
alert ('c with\t' + (ST1 - ST0) + '\t' + (ST3 - ST2) + '\nБЕЗ\t' + (ST2 - ST1) + '\t' + (ST4 - ST3));

  Ответить  
 
 автор: psychomc   (04.08.2010 в 17:04)   письмо автору
 
   для: АЯ   (04.08.2010 в 15:48)
 

вот сейчас фаерфокст с with заметно медленне, а ие и опера заметно быстрее

спасибо, познавательно :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования