Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   как удалить элемент из DOM (https://javascript.ru/forum/events/36294-kak-udalit-ehlement-iz-dom.html)

BorisBritva 10.03.2013 21:32

как удалить элемент из DOM
 
На странице есть js скрипт. Как его удалить другим скриптом?

Hekumok 10.03.2013 21:47

<script>var blah = "blah" ;</script>
<script>
var script = document.getElementsByTagName("script")[0] ;
script.parentNode.removeChild(script) ;
alert(document.querySelector("script").innerHTML) ;
</script>

BorisBritva 10.03.2013 21:58

А если скриптов на странице несколько и нужно удалить все?

Так неполучается:

var s = document.body.getElementsByTagName("script");
for(var i=0; i<s.length; i++)
        {
var script = document.getElementsByTagName("script")[i];
script.parentNode.removeChild(script);
alert(s.length);
        }

Hekumok 10.03.2013 22:15

BorisBritva, найдите все скрипты и в цикле удалите каждый
var arr = document.getElementsByTagName("script") ;
for(var i=0, l=arr.length; i<l; i++)
 arr[i].parentNode.removeChild(arr[i]) ;

zebra 11.03.2013 02:34

Толку от удаления скрипта не будет. :blink:

danik.js 11.03.2013 06:14

Hekumok, не обманывай себя, называя переменную arr (ну типа array). NodeList ведет себя по-другому, словно "живой" массив. Удалишь нулевой элемент - все остальные индексы тут же сдвинутся. Так что удалять нужно с конца. Или array = Array.prototype.slice(nodes)

Aetae 11.03.2013 16:25

Ну не так уж обязательно с конца:
while(arr[0]) ...
=)

rgl 11.03.2013 17:10

Вариант - превратить arr в настоящий массив:
var arr2 = Array.prototype.slice.call( arr, 0 )
for( var i = 0; i < arr2.length; ++i )
  arr2[i].parentNode.removeChild( arr2[i] );

Hekumok 11.03.2013 21:17

danik.js, упс, да, тупанул я) забыл, что NodeList - это "живой" массив


Часовой пояс GMT +3, время: 08:42.