2015-06-28 39 views
-1
document.addEventListener('DOMContentLoaded', function() { 

     var url = "http://api.openweathermap.org/data/2.5/weather?q=" + "ranchi" + "&units=metric"; 

     restClient(url); 

     document.querySelector('button').addEventListener('click', getWeatherByLocation); 

    }); 



    function getWeatherByLocation() {`......do some work here.. 

    var url=.....; 

    restClient(url); 
    }` 

    function restClient(url) {....//do some work here... 

document.getElementById("data").innerHTML="Something to write"..; 
} 

restClient()是ultmiatly的HTML頁上寫的功能,現在的問題是第一次DOMContetnLoadedrestClient被調用,它寫在HTML頁,然後下一行是執行其功能是:document.querySelector('button').addEventListener('click',getWeatherByLocation);
當某人觸發該按鈕,並最終功能restClient是從getWeatherByLocation函數, agin調用,但當某人再次觸發按鈕,如何再次執行第4行。函數restClient(url)如何不被調用whenevr DOMContentLoaded事件觸發?

我想在再次執行第4行之前,如果我沒有錯,第2,3行必須執行?

而且

+0

如果'getWeatherByLocation'不會重新加載DOM,爲什麼會2號線和3被再次叫什麼名字?或者我想念你的問題? – DavidDomain

+0

有損編輯使問題幾乎無法理解。 – Xan

回答

0

DOMContentLoaded火災只有一次,當頁面加載的第一次。

如果您希望每次運行getWeatherByLocation時都要執行其他代碼,則應將其移至getWeatherByLocation函數的末尾。

DOMContentLoaded文檔: https://developer.mozilla.org/en-US/docs/Web/Events/DOMContentLoaded

+0

此外,domcontentloaded通常不是內容腳本的正確位置。取決於擴展加載模式,它永遠不會被調用。 –

+0

哦,你100%正確!對不起,我完全錯過了Chrome擴展標籤! – dgrundel

相關問題