2015-12-02 71 views
0

我有下面這段代碼,從Visa網站上提取FX數據。每次點擊日期時,它都會添加另一行。想要使用js添加行onclick

但是,添加一行似乎會導致重新加載/刷新所有iframe ...爲什麼?我如何防止這種情況發生?

(你能活着看到它http://zinclabs.com/eur2

<body> 
<script> 

var date = new Date(); 

function format(date) { 
    var mm = date.getUTCMonth() + 1; 
    var dd = date.getUTCDate(); 
    var yy = date.getUTCFullYear(); 
    return mm + '/' + dd + '/' + yy; 
} 

function addrow(){ 
    var d = format(date); 
    document.body.innerHTML +='<div class="row"><div class="date" onclick="addrow()">'+d+'</div><div class="rate"><iframe scrolling="no" src="http://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html/?fromCurr=USD&toCurr=EUR&fee=0&exchangedate=' + d + '"></iframe></div></div>'; 
    date.setDate(date.getDate() - 1); 
} 

addrow(); 

</script> 
</body> 
+0

看看http://stackoverflow.com/questions/1357118/event-preventdefault-vs -return-false – JCOC611

+0

@ JCOC611嗯......對不起,這對我來說都是希臘人。我在看什麼? –

回答

0

在這種情況下document.body添加文本對象的innerHTML使對象–的一個完整的刷新。因此,其中的所有iframe將被重新加載。

相反,你可以創建一個新的DIV元素,並添加它作爲document.body孩子:

function addrow(){ 
    var d = format(date); 
    var newRow= document.createElement('div'); 
    newRow.innerHTML= '<div class="row"><div class="date" onclick="addrow()">'+d+'</div><div class="rate"><iframe scrolling="no" src="http://usa.visa.com/support/consumer/travel-support/exchange-rate-calculator.html/?fromCurr=USD&toCurr=EUR&fee=0&exchangedate=' + d + '"></iframe></div></div>'; 
    document.body.appendChild(newRow); 
    date.setDate(date.getDate() - 1); 
} 
+0

fan-freakin-tastic! –

相關問題