我在下面的代码中提取了来自Visa网站的外汇数据。每次点击日期,它都会添加另一行。
但添加一行似乎会导致重新加载/刷新所有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 :(得分:0)
向对象添加文本innerHTML
会导致对象的完全刷新 - 在本例中为document.body
。因此,其中的所有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);
}