2017-07-26 106 views
1

我開始編程。在底層代碼中,運行時會完全刷新頁面。我怎樣才能避免這種情況?非常感謝您的寶貴時間!如何在不刷新頁面的情況下使用javascript在HTML網頁中編寫某些內容?

<h1>Space Calculator Demo</h1><br> If you were to start a trip at 
 
<script type="text/javascript"> 
 
    function printTime() { 
 
    var d = new Date(); 
 
    var hours = d.getHours(); 
 
    var mins = d.getMinutes(); 
 
    var secs = d.getSeconds(); 
 
    document.body.innerHTML = hours + ":" + mins + ":" + secs; 
 
    } 
 
    setInterval(printTime, 1000); 
 
</script> 
 
<div id="time"></div> , how long would it take you and how much food and water would you need?

+1

它不會刷新頁面,而是將整個「document.body.innerHTML」的html設置爲文本。 –

+1

它不刷新你的頁面,它只是覆蓋完整的HTML。 'document.body.innerHTML'的選擇器必須是:'document.getElementById('time')。innerHTML',** [示例](https://jsfiddle.net/ak3zwak7/)** – empiric

+0

或[如何在一個元素內更改文本值?](https://stackoverflow.com/questions/15296589/change-element-text-without-jquery),[用jquery替換div中的文本](https:// stackoverflow .COM /問題/ 11867269 /替換,只有文本,裏面-A-DIV-使用-的jQuery) –

回答

2

的網頁不刷新,你在設置頁面等於你的時間的整個身體。而不是設置body,設置time

<h1>Space Calculator Demo</h1><br> If you were to start a trip at 
 
<script type="text/javascript"> 
 
    function printTime() { 
 
    var d = new Date(); 
 
    var hours = d.getHours(); 
 
    var mins = d.getMinutes(); 
 
    var secs = d.getSeconds(); 
 
    document.getElementById('time').innerHTML = hours + ":" + mins + ":" + secs + ","; 
 
    } 
 
    setInterval(printTime, 1000); 
 
</script> 
 
<div id="time"></div>How long would it take you and how much food and water would you need?

1

不是重寫身體的,使用的document.getElementById(「時間」),並設置該元素的純文本

1

通過分配給document.body.innerHTML,要覆蓋所有的內容在頁面上。 document.body引用整個頁面,所以設置爲HTML會擦除之前存在的所有內容(您的標題,div和文本)。

它看起來像你想要做的只是改變<div id="time"></div>的內容。對於這一點,你應該改變行

document.body.innerHTML = hours + ":" + mins + ":" + secs; 

這樣:

document.getElementById('time').innerHTML = hours + ":" + mins + ":" + secs; 

這將只覆蓋你的div的內容,離開頁面的其餘部分完好。

相關問題