簡體   English   中英

HTML頁面加載時未填充數組

[英]Array not being filled when the HTML page loads

我正在使用結合了HTML和JS的Google Apps腳本進行項目。 我對編程還很陌生,所以如果這是一個簡單的問題,請多多包涵。

基本上,在我的JS文件中,有一個函數可以使用此方法調用Google Apps腳本(從現在開始,GAS)文件中包含的函數; GAS函數使用從Google表格中獲取的值填充數組,然后返回該數組。 然后,JS文件使用此數組在HTML文件中填充一個下拉列表。

問題是根本沒有填充下拉列表。 如果我在打開Goog​​le Chrome控制台的情況下重新加載頁面,則會發現該數組為空; 但是,如果單擊空數組,則會顯示這些值,就像未在頁面加載時填充該值一樣。 請參閱下面的圖片,以更好地理解我的意思:

Google Chrome控制台屏幕截圖

在下面,您將找到處理差異功能的相關代碼片段:

JS:

 $(function() { var cities = []; function onSuccess(elem, array) { var i = 0; for (item in elem) { array.push(elem[i]) i++; }; return array }; google.script.run.withSuccessHandler(onSuccess).withUserObject(cities).populate(); //Create the dropdown menu for the cities for (city in cities) { var element = $("#city1").append("<option value=" + cities[city].toLowerCase() + ">" + cities[city] + "</option>"); console.log(city); }; [...] }); 

HTML:

<select id="city1" name="city" placeholder="City"><option id="citydummy">City</option></select>

Google Apps腳本:

 function populate() { var db = SpreadsheetApp.openById('SHEETID'); var check = true; var array = []; for (var i = 2; i < db.getLastRow(); i++) { db.getActiveSheet().getRange(i, "1").getValue() array.push(db.getActiveSheet().getRange(i, "1").getValue()) } return array; } 

在此先感謝您的貢獻!

JS的以下修改如何? HTML和GAS未被修改。 populate()獲得的數據直接發送到onSuccess() ,並將數據導入列表。

JS:

$(function() {
  google.script.run.withSuccessHandler(onSuccess).populate();
});

function onSuccess(cities) {
  for (city in cities) {
    var element = $("#city1").append("<option value=" + cities[city].toLowerCase() + ">" + cities[city] + "</option>");
    console.log(city);
  };
};

如果我誤解了你的情況,對不起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM