2012-02-02 83 views
0

我動態地將一個JavaScript文件包含到html頁面中,該工作正常。但是當我從文件運行函數'tryData'時,變量返回爲undefined。我一直在尋找幾個小時在任何地方都找不到類似問題,有誰知道問題是什麼?Javascript函數返回未定義的變量

功能的外部文件:

function tryData(id, size){ 
    document.getElementById('content').innerHTML = '<iframe src="http://domain.com/feeds/'+id+'/'+size+'/" id="frame"></iframe>'; 
    if(window.data){ 
     clearInterval(timer); 
     data(); 
    } 
} 

我使用叫它行:

tryData(131, 'large'); 

我知道功能運行時,由於預期該幀插入,但沒有內容作爲框架的網址讀取「domain.com/feeds/undefined/undefined/」,而不是「domain.com/feeds/131/large/」。

預先感謝任何幫助:)


這裏是功能的HTML頁面的一個例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta name="robots" content="NOINDEX,NOFOLLOW" /> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 


    <!-- Widget --> 
    <div id="content"></div>  
    <script> 
    (function(d, s) { 
    var js = d.createElement(s), ins = d.getElementsByTagName(s)[0]; 
     js.src = "http://domain.com/feeds/insert.js"; 
     ins.parentNode.insertBefore(js, ins); 
     tryData(131, 'large'); 
     }(document, 'script')); 
    </script> 
    <!-- Widget End --> 

</body> 
</html> 

這裏的js文件:

function data(){ 
    var u; 
    u = document.URL; 
    $.post("http://domain.com/data.php", { u: u}); 
} 

function tryData(id, size){ 
    document.getElementById('lsb').innerHTML = '<iframe src="http://domain.com/feeds/'+id+'/'+size+'/" id="frame"></iframe>'; 
    if(window.data){ 
     clearInterval(timer); 
     data(); 
    } 
} 

var script = document.createElement('script'); 
script.src = 'http://code.jquery.com/jquery-latest.js'; 
script.type = 'text/javascript'; 
document.getElementsByTagName('head')[0].appendChild(script); 

timer = setInterval(tryData, 100); 
+0

要調用它,就像是,隨着硬編碼參數? – 2012-02-02 20:05:02

+0

如何使用某種調試器(每個瀏覽器都有一個) – SergeS 2012-02-02 20:05:11

+0

垃圾入=垃圾出。什麼參數被傳遞?他們來自哪裏? – 2012-02-02 20:07:33

回答

4

你在哪裏傳遞參數?

試試這個:

timer = setInterval(function(){ 
    tryData(131, 'large'); 
}, 100); 
+0

我厭倦了這一點,但它似乎不斷重新加載頁面。我會和它一起玩,看看我能不能堅持下去。謝謝 – Paul 2012-02-02 20:34:02

+0

只需要刪除「timer = setInterval(tryData,100);」從我的js文件中爲我工作。非常感謝Alex。 – Paul 2012-02-02 20:42:46