0

だから私はFacebookの特定のユーザーによって作成されたイベントから配列を作成しています、私はすべてのAPIのものとすべてを機能させていますが、何らかの理由でそれをdocument.writeすることはできません。

これが私のコードです:

for( var i = 0 ; i < response.length ; i++ ) 
{
    if (response[i]['eid'] > 0)
    {
        document.write([response[i]['name']] + '</br>' + response[i]['description']),
        console.log([response[i]['name']] + '</br>' + response[i]['description']);
    }
}

ログに記録すると問題ありませんが、実際にはページに表示できません。alert()'ingも機能します。

これらの変数をどのように吐き出すことができるかについてのアイデアはありますか?

4

2 に答える 2

5

ページの読み込み後にdocument.writeを呼び出すと、返されたデータを含まない現在のページが再書き込みされるか、そのデータを繰り返しループします。FB APIを使用しているので、これはページの読み込み後に実行されていると思います。クライアント側のテンプレートソリューションを使用して、そのすべてのデータをレンダリングしてみてください。そうすれば、データのHTMLを作成するために一連の文字列連結を行う必要がなくなります。

于 2013-01-04T02:16:01.643 に答える
0

ページの唯一の目的がFBapi呼び出しの結果を表示することである場合、ページが有効なHTMLとして設定され、すべてのjavascriptがドキュメントの先頭部分に含まれている限り、document.writeは機能するはずです。document.writeは通常、ページが読み込まれる前、および本文内でのみ使用されます。ページが読み込まれると、ドキュメントの本文セクション全体が上書きされて置き換えられます。したがって、スクリプトのいずれかが本文内にある場合は、それも置き換えられます。

私の意見では、はるかに優れた代替策は、divを作成し、その結果をdivに入力することです。

HTML:

<div id="results">
</div>

Javascript:

var results = "";

for( var i = 0 ; i < response.length ; i++ ) 
{
    if (response[i]['eid'] > 0)
    {
        results += response[i]['name'] + '</br>' + response[i]['description'];
        console.log(response[i]['name'] + '</br>' + response[i]['description']);
    }
}

document.getElementById("results").innerHTML = results;

編集:上記の私の説明は間違っています。document.writeは、ページの読み込み後に使用された場合、ドキュメント全体を書き換えます。上記の私の解決策はまだ100%有効です。

上記の受け入れられた答えは100%正しくありません...以下のコードは、ドキュメントが上書きされた場合でも、少なくとも、グローバルオブジェクト(ウィンドウ)にすでに設定されている関数と変数が失われないことを明確に示しています。走る。したがって、すでに設定されているデータをループすると、データは引き続き実行されて結果が表示されるため、JavaScriptが上書きされるだけでなく、問題が発生します。

これを試してみてください:

<!DOCTYPE html>
<html>
<head>
<title>hi</title>
<script type="text/javascript">
    window.onload = function () {
        setTimeout(function () {
            for (i = 0; i < 10; i++)
                // this runs 3 seconds after the page loads, so after the first iteration
                // the entire document is erased and overwritten with 'hi',
                // however this loop continues to run, and write() continues to execute,
                // showing that the javascript still exists and operates normally.
                write();
        }, 3000);
    };

    // this variable will still exist after the page is overwritten
    window.someVar = "foo";

    // this function still exists and executes after the page is overwritten
    function write() {
        document.write("hi");
    }
</script>
</head>
<body>
<div>
    <b>hello</b>
</div>
</body>
</html>
于 2013-01-04T02:34:56.920 に答える