2

レポート用に Google スプレッドシートから一連のセルを Web ページに取り込もうとしています。タイムアウトの使用を提案した他のいくつかの投稿を読みましたが、それも機能していないようです。それがうまくいくと思われる場合は、タイムアウトに使用しようとしたコードを追加できます。これが私のコードです:

    var days = new Array(); 
days[0] ="G11%3AG11"; /*Today*/
days[1] ="G10%3AG10";
days[2] ="G9%3AG9";
days[3] ="G8%3AG8";
days[4] ="G7%3AG7";
days[5] ="G6%3AG6";
days[6] ="G5%3AG5";
days[7] ="G4%3AG4"; /*One week ago*/

    var dayOfWeek = new Array();    
dayOfWeek[0] ="day0";
dayOfWeek[1] ="day1";
dayOfWeek[2] ="day2";
dayOfWeek[3] ="day3";
dayOfWeek[4] ="day4";
dayOfWeek[5] ="day5";
dayOfWeek[6] ="day6";
dayOfWeek[7] ="day7";

    function getValue(cell, element){
var url = "https://docs.google.com/spreadsheet/pub?key=MyKey&single=true&gid=2&range="+cell+"&output=csv";
temp = new XMLHttpRequest();
        temp.onreadystatechange = function () {
          if (temp.readyState === 4) {
              document.getElementById(element).innerHTML = temp.responseText;
          }
      };
      temp.open("GET", url, true);
      temp.send(null);

}

コードの本体で関数を呼び出すと、次のようになります。

    for(var a=0;a<days.length;a++){      
     getValue(days[a],dayOfWeek[a]);
    }

for ループで実行すると、id タグごとに同じ値が得られます。これらはすべて、配列の最後の項目の値です。問題がxmlhttprequestで十分な時間が得られないのか、それとも何なのかはわかりません。助けていただければ幸いです。

4

1 に答える 1

3

XHR イベント ハンドラで「temp」をローカル変数として適切に宣言していません。その前に追加varします。それがなければ、それはグローバルです。つまり、「getValue()」を呼び出すたびに、前の作業が上書きされます。

于 2013-10-08T19:06:02.793 に答える