Функция Javascript возвращает переменные как неопределенные - PullRequest
0 голосов
/ 03 февраля 2012

Я динамически включаю файл javascript в html-страницу, которая прекрасно работает.Но когда я запускаю функцию «tryData» из файла, переменные возвращаются как неопределенные.Я искал часы, не могу найти подобную проблему, кто-нибудь знает, в чем проблема?

функция во внешнем файле:

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');

Я знаю, что функция работает, потому что фрейм вставлен, как ожидается, но нет содержимого, так как URL для фрейма читает '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);

1 Ответ

4 голосов
/ 03 февраля 2012

Куда вы передаете параметры?

Попробуйте это:

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