Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > не удаляется кнопка в IE


Автор: c124578 1.8.2011, 23:14
хочу организовать блокнот, схема такая - нажатие на div-контейнер->в нем же создается кнопка 'удалить из блокнота' и в внешнем контейнере - 'просмотреть блокнот', добавляется кука.
нажатие на 'удалить из блокнота' -> удаляется эта кнопка и кука; если кук нет, или равны 0 (для IE), удалить кнопку 'просмотреть блокнот'
Код

   function AddToBusket (event) {
      var x=event.target||event.srcElement;
      if (x.parentNode.className=='item_box' ) {
         x=x.parentNode;
         var id=x.innerHTML.match(/в базе[^\d]{1,5}([0-9]+)<\//);
         var isset=document.cookie.match("id"+id[1]+"="+(id[1]));
         if (isset==null) {
            setcookie("id"+id[1], id[1], 500);
            var c=document.createElement("button");
            c.className="DeleteItem";
            c.textContent="Удалить из блокнота";
            x.appendChild(c);
            c.onclick=DeleteCookie;         
         } else {
         alert("Этот объект уже в блокноте");
         }
         if (!document.getElementById("ShowBusketButton")) { 
            c=document.createElement("button");
            c.id="ShowBusketButton";
            c.setAttribute("type", "button"); 
            c.onclick=GoTo;    
            document.getElementById("wrap").appendChild(c);
         }
      } 
   }


   function DeleteCookie(e) {
      if (!e) var e = window.event;
          e.cancelBubble = true;
      if (e.stopPropagation) e.stopPropagation(); //подавляем всплытие события
      var x=e.target||e.srcElement;
      x=x.parentNode;      
      var id=x.innerHTML.match(/в базе[^\d]{1,5}([0-9]+)<\//); //находим номер записи
      setcookie("id"+id[1], 0, -1); // удаляем из блокнота
      x.removeChild((x.getElementsByTagName("Button"))[0]); //удаляем кнопку 'удалить из блокнота'
      var matches=document.cookie.match(/id[0-9]+=[0-9]{2,5}/gi); //если куки пустые
      if (matches==undefined) { 
         document.getElementById("wrap").removeChild(document.getElementById("ShowBusketButton")); //не работает в IE
      }
         
   }

Такая вот проблема - не работает последняя строка в IE, в любом.

Еще вопрос такой: если php скрипт на основании кук выводит эти кнопки, указывая обработчики события  onclick, то обработчик не вызывается (firebug показывает onclick в атрибутах кнопки), сейчас присваиваю обработчики по onload, функцией. Вопрос: как люди решают эту проблему и отчего она.

И вопрос на будущее: как при нажатии пользователем кнопки браузера 'назад', это дело перехватить и направить его на сервер, чтобы страница заново перерисовалась, делать все страницы  устаревшими не хотелось бы.
Очень буду благодарен за ответы по-существу, я совсем неопытный, если это все очень просто, просьба все-таки по-существу.

Автор: c124578 2.8.2011, 22:44
Первая проблема решается вот-так:
Код

document.getElementById("ShowBusketButton").parentNode.removeChild(document.getElementById("ShowBusketButton"));

действительно ИШАК этот IE, все остальные принимали разные нотации.

По другим двум вопросам ответа пока не нашел.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)