Google Apps脚本有点新鲜,但我看到listBox
类似乎有些奇怪的行为。这是剧本的一个LARGER片段:
var storeNameHandler = app.createServerHandler("newStoreHandler");
var storeNameLabel = app.createHTML("<BR /><B>Which store or site:</B>");
var LB_storeName = app.createListBox().setId('storeName').setName('storeName');
LB_storeName.addChangeHandler(storeNameHandler);
// Get the stores on the budget sheet.
var stores = budgetSheet.getRange("H2:H").getValues();
// add items to ListBox
LB_storeName.addItem("");
LB_storeName.addItem("NEW STORE/SITE");
stores.forEach(function(item){
if(item!="") LB_storeName.addItem(item);
});
这是onChange处理程序:
function newStoreHandler(e) {
var app = UiApp.getActiveApplication();
var storeNameListBox = app.getElementById('storeName');
storeNameListBox.setVisible(false);
var newStoreNameInput = app.getElementById('newStoreName');
newStoreNameInput.setVisible(true);
}
我们的想法是让列表框消失,并且文本输入框出现在同一个地方(或者只是在下面,无论什么可能)onChange。我将向处理程序添加逻辑,以确定哪一个选项将导致列表框隐藏/输入揭示事件一旦我开始工作就会发生。
当我检查生成的列表框元素时,它会将 名称 显示为storeName
但不显示ID。列表框按预期从电子表格中的数据中显示。 setId()方法不应将 id 标记添加到列表框,就像 name (见下文)?
inspect元素报告的列表框:
<select class="gwt-ListBox" name="storeName">
<option value=""></option>
<option value="NEW STORE/SITE">NEW STORE/SITE</option>
<option value="Costco">Costco</option>
<option value="Amazon.com">Amazon.com</option>
<option value="Woot.com">Woot.com</option>
</select>
请注意明显缺少 id ,但显然正在设置 名称 。
答案 0 :(得分:1)
这是我看到并期望来自UiApp的行为,因为Ui的html并非设计为在应用程序本身之外进行操作。因此,id对用户或应用程序开发人员没有意义。 如果您想要更好地控制应用程序的HTML,请避免使用UiApp(未进一步开发)。