Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как удалить элемент (https://javascript.ru/forum/misc/17128-kak-udalit-ehlement.html)

SergoMorello 06.05.2011 20:14

Как удалить элемент
 
Всем привет я новичёк в ява скриптах помогите правильно сделать данную функцию
<script>
var q=new Array();
function showhide(ve,ps)
{
    // Находим все дивы c нужным значением атрибута gr и складываем в 1 массив
    if(q[ve]==undefined) {
    q[ve]=new Array();
    v=document.getElementsByTagName('span');
 
    for(i=0;i<v.length;i++)
         if(v[i].getAttribute && v[i].getAttribute('gr')==ve) q[ve][q[ve].length]=v[i];
    }

    for(i in q[ve])
    {


        // Если ищем див по id
        if(q[ve][i].id && q[ve][i].id==ps) ps = i;
        // Этот блок можно убрать, если не нужны кнопки "<" / ">"
        if(q[ve][i].style.display!='none')
        {
        if(ps=='next') ps=((i*1+1)==q[ve].length?0:i*1+1);
        if(ps=='prev') ps=((i-1)==(-1)?q[ve].length-1:i-1);
        }
    q[ve][i].style.display='none';
    }
 
q[ve][ps].style.display='';

}
</script>

как сделать чтобы предыдущий элемент на странице не скрывался а удалялся ?

SergoMorello 07.05.2011 13:38

мне кто нибудь поможет?

monolithed 07.05.2011 14:57

Цитата:

Сообщение от SergoMorello
мне кто нибудь поможет?

такое чувство что ваш код пропустили через обфускатор.
если вам нужно удалить элемент, то воспользуйтесь методом removeChild(), если заменить replaceChild(), пропустить - инструкцией continue

SergoMorello 07.05.2011 15:05

Цитата:

Сообщение от monolithed (Сообщение 103712)
такое чувство что ваш код пропустили через обфускатор.
если вам нужно удалить элемент, то воспользуйтесь методом removeChild(), если заменить replaceChild(), пропустить - инструкцией continue

я незнаю что такое обфускатор но дело не в этом , данный код работает исправно но его минус то что он просто скрывает предыдущий элемент а мне нужно чтобы он его удалял , если вам не трудно пожалуйста напишите как правильно и что заменить (я понимаю что данную строку style.display='none'; но если я пишу q[ve][i].removeChild(); то код вообще перестаёт работать)

monolithed 07.05.2011 15:30

Внимательно проанализируйте:
<script type="text/javascript">
window.onload = function() {
    var div = document.getElementById('div'), p = div.children, i = p.length;
    while(i--) {
        var node = p[i];
        if(node.id == 'p') {
            div.removeChild(node);  //удаляем элемент с id="p"
       }
    }
};
</script>

<div id="div">
    <p>1</p>
    <p id="p">2</p>
    <p>3</p>
</div>

SergoMorello 07.05.2011 15:41

Цитата:

Сообщение от monolithed (Сообщение 103718)
На основе этого примера вы сможете понять свои ошибки:
<script type="text/javascript">
window.onload = function() {
    var div = document.getElementById('div'), p = div.children, i = p.length;
    while(i--) {
        var node = p[i];
        if(node.nodeName == 'P' && node.id == 'p') {
            div.removeChild(node);  //удаляем элемент с id="p"
       }
    }
};
</script>

<div id="div">
    <p>1</p>
    <p id="p">2</p>
    <p>3</p>
</div>

понял только то что элемент 2 удалится (как работает это удаление я уже разобрался ещё вчера но мне нужно чтобы оно работало именно на том коде если вы можете пожалуйста помогите где что исправить)

SergoMorello 07.05.2011 15:47

или может поможете написать код подобный моему (на странице отображается много элементов они все скрыты открываеш 1 , открываеш 2 и первый закрывается(нужно чтобы удалялся))

SergoMorello 08.05.2011 03:46

Всё спасибо больше не требуется сам сделал может и неправильно но главное работает , вот мож кому пригодится
<script>
var q=new Array();
function showhidens(ve,ps)
{
    // Находим все дивы c нужным значением атрибута gr и складываем в 1 массив
    if(q[ve]==undefined) {
    q[ve]=new Array();
    v=document.getElementsByTagName('span');
 
    for(i=0;i<v.length;i++)
         if(v[i].getAttribute && v[i].getAttribute('gr')==ve) q[ve][q[ve].length]=v[i];
    }

    for(i in q[ve])
    {


        // Если ищем див по id
        if(q[ve][i].id && q[ve][i].id==ps) ps = i;
        // Этот блок можно убрать, если не нужны кнопки "<" / ">"
        if(q[ve][i].style.display!='none')
        {
        if(ps=='next') ps=((i*1+1)==q[ve].length?0:i*1+1);
        if(ps=='prev') ps=((i-1)==(-1)?q[ve].length-1:i-1);
        }
$('#stat_'+i).empty();
    }
 
q[ve][ps].style.display='';

}
</script>


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