<html>
<table>
<tr>
<select id="Ultra" onchange="getForm()">
<option value="0.0">1</option>
<option value="1.0">2</option>
<option value="2.0">3</option>
<option value="3.0">4</option>
</select>
</tr>
<tr>
<td id="demo">
<script>
function getForm()
{
google.script.run.withSuccessHandler(myFunction).myFuncti();
}
function myFunction(arry)
{
var x = document.getElementById("Ultra").value;
for(i=0;i<arry.length;++i)
{
if(arry[i][0] == x)
{
var a = arry[i][1];
}
document.getElementById("demo").innerHTML = a;
}
}
</script>
</td>
</tr>
</table>
</html>
我使用select创建了一个下拉菜单,之后我调用了客户端函数getForm()
。在该函数中,我使用myFuncti()
类调用服务器端函数google.script.run
,这将返回一个数组,我将其传递给客户端函数myfunction()
作为参数。
如果使用Logger.log()
,服务器端函数将成功返回数组值!!
它是一个2D数组..我是否正确地将它传递给myFunction()
?
如果您对问题无法理解,请添加评论我将回复
答案 0 :(得分:2)
这是代码需要的样子,请注意在客户端使用console.log()进行调试(CTRL-SHFT-I通常在浏览器中打开开发人员控制台窗口):
<强>的index.html 强>
<div>
<select id="Ultra" onchange="getForm()">
<option value="1.0">1</option>
<option value="2.0">2</option>
<option value="3.0">3</option>
<option value="4.0">4</option>
</select>
<p id="demo"></p>
</div>
<script>
function getForm() {
google.script.run.withSuccessHandler(myFunction).myFuncti();
}
function myFunction(arry) {
var x = document.getElementById("Ultra").value;
var y = parseInt(x, 10);
var i = 0;
var a;
console.log('x (string) = ' + x);
console.log('y (number) = ' + y);
console.log(arry);
for (; i < arry.length; i++) {
a = arry[i];
console.log('a = ' + a);
if (a === y) {
console.log('a === y');
document.getElementById("demo").innerHTML = a;
}
}
}
</script>
<强> code.gs 强>
function doGet(form) {
return HtmlService
.createHtmlOutputFromFile('index');
}
function myFuncti() {
return [1, 2, 3, 4];
}
答案 1 :(得分:0)
根据文档,您可以直接从服务器端函数返回数组,并直接在客户端使用Javascript。
相关文档:https://developers.google.com/apps-script/guides/html/communication#parameters_and_return_values
使用浏览器的开发者工具调试客户端Javascript。
一些猜测:
您的问题可能与您在客户端访问阵列的方式有关,可能if(arry[i][0] == x)
永远不会匹配,或者您对{1}}的索引1而不是0的引用不正确
你也在声明变量&#34; a&#34;在if的括号内,但是然后将它分配到那些括号之外,也许你的意思是:
var a = arry[i][1];