2016-09-16 4 views
0

У меня очень простой код: я хочу отменить кнопку после ее щелчка, чтобы отобразить что-то еще. Я попробовал этот путьHTML-кнопка отменяется только после второго щелчка

HTML:

<div id="container"> 
    <input type="button" value="New game" onclick="newGame()" /> 
</div> 

ЯШ:

function newGame() { 
    var container = document.getElementById("container"); 
    container.removeChild(container.childNodes[0]); 
} 

Что происходит кнопка будет отменено только, если я нажму его в два раза. Где я ошиблась? Простите, если это repost, я попытался проверить, но не нашел ни одного вопроса, который был бы похож на мой

+0

Это может помочь, смотреть на это. http://stackoverflow.com/questions/21214590/change-button-text-show-hide-show-on-click-in-jquery-toggle Спасибо – Sagar

+0

, пожалуйста, примите ответ, который помог вам решить вашу проблему. Это может помочь и другим. –

ответ

0

Если удалить \n (т.е. новая линия) Ваш код будет работать

попробовать, как этот

function newGame() { 
 
var container = document.getElementById("container"); 
 
debugger; 
 
container.removeChild(container.childNodes[0]); 
 
}
<div id="container"><input type="button" value="New game" onclick="newGame()" /></div>

Причина, почему ваш код не работает это, когда вы нажмете enter после div, HTML DOM автоматически создаст один фиктивный текстовый узел, поскольку он является дочерним. следовательно, ваш input узел стал вторым ребенком для вашего container.

Working fiddle

Надеется, что это помогает :)

1

Похоже, что ваш код будет удалять кнопку, как только вы нажмете на нее. Это правильно, или мы не смотрим на полную разметку?

+0

Да, это то, что я хочу, но кнопка удаляется во втором клике ... код продолжает создавать таблицу, поэтому, если я нажимаю кнопку два раза, это проблема, потому что я получаю две таблицы – RickIris

0

попробовать это:

function newGame() { 
    var container = document.getElementById("container"); 
    // change 0 to 1 
    container.removeChild(container.childNodes[1]); 
} 

container.childNodes[0] представляет собой текстовый узел, в котором текст Newline

0

Я дал идентификатор на кнопку и удалить его с помощью идентификатора. В вашем случае он не удаляется в первый раз, потому что container.childNodes [0] в первый раз не является кнопкой. Попробуйте самостоятельно, используя console.log в своей функции.

function newGame() { 
 
    var container = document.getElementById("container"); 
 
    var d_nested = document.getElementById("button_1"); 
 
    var throwawayNode = container.removeChild(d_nested); 
 
    //container.innerHTML=''; 
 
}
<div id="container"> 
 
    <input id="button_1" type="button" value="New game" onclick="newGame()" /> 
 
</div>

0

В качестве альтернативы, вы можете сделать это:

<div id="container"> 
<input type="button" value="New game" onclick="document.getElementById('container').removeChild(this);" /> 

Нет отдельный файл JS необходим.