[英]Array not being filled when the HTML page loads
我正在使用結合了HTML和JS的Google Apps腳本進行項目。 我對編程還很陌生,所以如果這是一個簡單的問題,請多多包涵。
基本上,在我的JS文件中,有一個函數可以使用此方法調用Google Apps腳本(從現在開始,GAS)文件中包含的函數; GAS函數使用從Google表格中獲取的值填充數組,然后返回該數組。 然后,JS文件使用此數組在HTML文件中填充一個下拉列表。
問題是根本沒有填充下拉列表。 如果我在打開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()
,並將數據導入列表。
$(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.