2014-09-13 2 views
0

Я нижеуказанным код, изменения, внесенные innerHTML не отражают в браузереdocument.getElementById («ID»). InnerHTML = «некоторое значение» изменения не отражают

<body> 

<script TYPE="text/javascript"> 
    function change(){ 
     document.getElementById("op").innerHTML="this works!"; 
     prompt(document.getElementById("op").innerHTML); 
    } 
</script> 

<form onSubmit="change()"> 
    <table> 
     <tr> 
      <td id="a1">This</td> 
      <td id="a2"><input type="text" id="t1"></td> 
     </tr> 
    </table> 
    <input type="submit" value="submit"> 
</form> 

// Выход

<table> 
     <tr><td id="op"></td></tr> 
    </table> 

    </body> 
</html> 

Изменения происходят, как показано подсказкой, но не отражаются на странице.

+0

страница будет обновляться, как только ваш код завершения выполнения. http://jsfiddle.net/8gq155ap/ –

+0

http://jsfiddle.net/arunpjohny/k76tadte/1/ –

ответ

4

JavaScript не имеет резьбы. Браузер не будет запускать событие перерисовки, пока не будет завершена функция, которая назначила значение innerHTML.

Эта функция не будет завершена до тех пор, пока не будет сброшена подсказка (функция блокировки).

В этот момент, поскольку он был инициирован кнопкой отправки, форма будет немедленно отправлена ​​и будет загружена новая страница (которая будет содержать содержимое ячейки таблицы в исходном состоянии).

Отмените событие по умолчанию для формы.

90s стиль:

function change() 
{ 
    document.getElementById("op").innerHTML="this works!"; 
    prompt(document.getElementById("op").innerHTML); 
    return false; 
} 

onSubmit="return change()"> 

Современный стиль:

function change(event) 
{ 
    event.preventDefault(); 
    document.getElementById("op").innerHTML="this works!"; 
    prompt(document.getElementById("op").innerHTML); 
} 
document.querySelector('form').addEventListener("submit", change); 
+0

Возможно, это правда в Firefox, но в Chrome (только что протестировано) оно вызывает перерисовку, поскольку поток приостановлено 'prompt' (с/без' preventDefault') –

+0

Эй, спасибо за сверхбыструю помощь! – igauravkamat

Смежные вопросы