2016-12-06 2 views
2

Это мой код. Он находится в файле php. Это не совсем то, что я хочу. Он скрывает один вариант и отображает другое, но то, что мне нужно сделать, - это не просто возможность скрываться визуально, но и вообще не отображаться в html. Теперь, если вы нажмете источник просмотра, он отобразит все div. Мне нужно это, когда я нажимаю один вариант, остальные исчезают из html и просмотра страницы, только выбранный, чтобы быть там. Есть идеи по этому поводу?Удалить div из html с javascript

<select name="type" onchange="showstuff(this.value);"> 
       <option value="code">Code</option> 
       <option value="look">Look</option> 
       <option value="have" selected>Have</option> 
    </select> 

    <div id="have" style="display:block;">1</div> 
<div id="look" style="display:none;">2</div> 
    <div id="code" style="display:none;">3</div> 

    <script> 
    function showstuff(element){ 
     document.getElementById("have").style.display = element=="have"?"block":"none"; 
     document.getElementById("look").style.display = element=="look"?"block":"none"; 
      document.getElementById("code").style.display = element=="code"?"block":"none"; 
    } 
    </script> 
+2

"Просмотр исходного кода" никогда не изменится. Инспектор DOM в вашем браузере изменится, если вы измените DOM, но источник - это то, что ваш браузер первоначально получил и не изменится. – lonesomeday

+0

Так что нет никакого способа с javascript для отображения/загрузки в html только div, который мне нужен? –

+0

Есть способ сделать это @ lonesomeday ..... Держись, я напишу его для тебя – driconmax

ответ

1

Вы можете создать div поставить активный вариант на него.

Что-то вроде этого

<select name="type" onchange="showstuff(this.value);"> 
    <option value="code">Code</option> 
    <option value="look">Look</option> 
    <option value="have" selected>Have</option> 
</select> 

<div id="optionContainer"> 
</div> 

<script> 

    //Object with the options. you can access for example have with options['have'] or options.have 
    var options = {'have':'<div id="have"><b>1</b></div>', 
        'look':'<div id="have"><b>2</b></div>', 
        'code':'<div id="have"><b>3</b></div>'}; 

    function showstuff(element){ 
     //Replace the inner HTML of the div optionContainer with the string in the option 
     document.getElementById("optionContainer").innerHTML = options[element]; 
    } 

</script> 

Я создал этот jsfiddle, чтобы увидеть его в действии

+0

Спасибо. Дело в том, что между этим

у меня нет текста, но больше погружений в разных вариантах 1 2 3. Есть идея по этому поводу? –

+0

Просто добавьте div в Object. ' 'Есть': '

'' – driconmax

+0

Например:

1

2

1

Использование JQuery methods- шоу(), скрыть() и удалить(). Можно использовать $ ("# id"). Remove(), чтобы удалить html с отображаемой страницы.

https://api.jquery.com/remove/

+0

Это удалит его из DOM, а не из источника страницы – phobia82

+2

Спасибо за ваш комментарий, я проголосовал за ваш ответ. Хотел бы я отметить оба ответа, как принято. –