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

HTML+CSS+JavaScript

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

 

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

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

тема: как удалить объект из его метода
 
 автор: angelcorpc   (29.10.2009 в 12:55)   письмо автору
 
 

Есть некий объект. У него есть метод, в нем необходимо удалить объект.
Вот объект:
function obj(name)
{
 this.name = name;
 this.create = objCreate;
 this.min = objClose;
}

Это метод create:
function objCreate()
 {
 str = '<div id="'+this.name+'">здесь некий текст</div>';
 document.getElementById('text_body').innerHTML += str;
 }

а вот какой должен быть метод close я не знаю.
Я попробовал внутри объекта поставить кнопку по клику на ней поставить такое событие:
document.all.'+this.name+'.removeNode(true)

но как эту строку перенести в метод, я не знаю.
Подскажите пожалуйста.

  Ответить  
 
 автор: angelcorpc   (30.10.2009 в 12:30)   письмо автору
 
   для: angelcorpc   (29.10.2009 в 12:55)
 

Люди, ну что, никто не знает?

  Ответить  
 
 автор: coloboc66   (30.10.2009 в 12:38)   письмо автору
 
   для: angelcorpc   (29.10.2009 в 12:55)
 

Наверное, так:
<script>
function objClose() 
 { 
 //Здесь код удаления объекта
 }
</script>
<input type=button value=Go onclick=objClose() />

  Ответить  
 
 автор: angelcorpc   (30.10.2009 в 13:01)   письмо автору
 
   для: coloboc66   (30.10.2009 в 12:38)
 

Так это-то понятно, но что написать вместо
> //Здесь код удаления объекта

  Ответить  
 
 автор: coloboc66   (30.10.2009 в 13:41)   письмо автору
 
   для: angelcorpc   (30.10.2009 в 13:01)
 

Что-то вроде:
x=document.getElementById('div_id');
y=document.body.removeChild(x);

Документацию надо читать...

  Ответить  
 
 автор: guye   (30.10.2009 в 15:08)   письмо автору
 
   для: angelcorpc   (29.10.2009 в 12:55)
 

я может чегото не понял но можно удалить экземпляр объекта но не как не метод если еметься ввиду уничтожить див то так
document.getElementById(id).parentNode.removeChild(document.getElementById(id))

  Ответить  
 
 автор: angelcorpc   (30.10.2009 в 17:33)   письмо автору
 
   для: guye   (30.10.2009 в 15:08)
 

Удалить надо именно объект.
Так как описано, не получается.

Приведу полностью весь код:

//
//класс
//

function win(x, y, w, h, dial, name, header, body)
{
 this.x = x;
 this.y = y;
 this.w = w;
 this.h = h;
 this.dialog = dial;
 this.name = name;
 this.head = header;
 this.body = body;
 this.create = WinCreate;
 this.min = WinClose;
}


//
//методы
//

function WinCreate()
 {
 if (!this.dialog){
  close_btn = '<td id="" bgcolor="blue">\n'+'<INPUT type="image" src ="1.gif" OnClick="'+this.name+'.min()">\n'+'</td>\n';
  clspan = ' colspan="2"';
 }
 else{
  close_btn = '';
  clspan = '';
 }
 str = '<div id="'+this.name+'" style="position: absolute; top: '+this.y+'px; left: '+this.x+'px; width: '+this.w+'px; height: '   +this.h+'px;">\n'
 +'<table width="100%" border="1" bordercolor="blue" cellspacing="0" cellpadding="0">\n'
  +'<tr>\n'
    + close_btn
   +'<td width="100%" height="21" align="center" bgcolor="blue"">\n'
    +'<font color="white"><b>'+this.head+'</b></font>\n'
   +'</td>\n'
  +'</tr>\n'
  +'<tr>\n'
    +'<td at="bd" bgcolor="white"'+clspan+'>\n'
     +'<div id="div_'+this.name+'">\n'
      +this.body+'</div>\n'
    +'</td>\n'
   +'</tr>\n'
  +'</table>\n'
 +'</div>';
 document.getElementById('text_body').innerHTML += str;
 }

function WinClose(){
 x=document.getElementById(this.name);
 y=document.body.removeChild(x);
}

Что я не правильно делаю?

  Ответить  
 
 автор: coloboc66   (31.10.2009 в 09:14)   письмо автору
 
   для: angelcorpc   (30.10.2009 в 17:33)
 

x=document.getElementById(this.name);
По крайней мере в этой строке скрипт не понимает Id объекта, подлежащего удалению. Он у вас не указан. Попробуйте внутри WinClose написать alert(this.name) и получите что-то типа undefined.

  Ответить  
 
 автор: angelcorpc   (31.10.2009 в 15:03)   письмо автору
 
   для: coloboc66   (31.10.2009 в 09:14)
 

Попробовал. Получил: window_1. Т.е. название определяется нормально.
Протестировал в Лисе в firebug, он ругается на строчку y=document.body.removeChild(x);
Говорит: Node was not found" code: "8

  Ответить  
 
 автор: angelcorpc   (02.11.2009 в 10:54)   письмо автору
 
   для: angelcorpc   (31.10.2009 в 15:03)
 

Как я понимаю, выхода из этой ситуации нет...

  Ответить  
 
 автор: coloboc66   (02.11.2009 в 12:01)   письмо автору
 
   для: angelcorpc   (02.11.2009 в 10:54)
 

Выход из этой ситуации простой - корректное (т.е. без ошибок) написание кода. А для этого нужно изучить DOM. Я же вам просто показывал, в каком направлении двигаться. Точный код дать не могу, извините, для этого нужно копаться в справочниках и тестировать ваш скрипт, а мне недосуг. Может кто другой может...

  Ответить  
 
 автор: angelcorpc   (02.11.2009 в 13:24)   письмо автору
 
   для: coloboc66   (02.11.2009 в 12:01)
 

Хорошо, спасибо всем за помощь:)
Буду зарываться в книжки и статьи:))))

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

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