Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从不同的HTML标记中获取多个相应的值,以便在函数中使用_Javascript_Html_Dom_Google Apps Script_Return Value - Fatal编程技术网

Javascript 从不同的HTML标记中获取多个相应的值,以便在函数中使用

Javascript 从不同的HTML标记中获取多个相应的值,以便在函数中使用,javascript,html,dom,google-apps-script,return-value,Javascript,Html,Dom,Google Apps Script,Return Value,我试图通过按下侧边栏上的按钮来调用函数 函数应该找到标记的复选框,并从标记中获取相应的名称 然后,它将名称传递给后端的GoogleApps脚本函数(该函数起作用),以从工作表中获取日历数组 然后,它将名称和日历数组收集到一个对象{}中,并将其传递给另一个后端函数,该函数获取日历事件并将它们写入一个工作表(也可以工作) 最终结果应该是:将日历中的事件写入工作表(从后端工作)。当我从侧边栏执行操作时,我不会将事件写在工作表上。 我猜这个importJobs()函数中有一些错误 //get b

我试图通过按下侧边栏上的按钮来调用函数

函数应该找到
标记的复选框,并从
标记中获取相应的名称

然后,它将名称传递给后端的GoogleApps脚本函数(该函数起作用),以从工作表中获取日历数组

然后,它将名称和日历数组收集到一个对象{}中,并将其传递给另一个后端函数,该函数获取日历事件并将它们写入一个工作表(也可以工作)

最终结果应该是:将日历中的事件写入工作表(从后端工作)。当我从侧边栏执行操作时,我不会将事件写在工作表上。

我猜这个importJobs()函数中有一些错误

    //get button by id, on click run function
    document.getElementById("btn").addEventListener("click", createData)
职能:

//获取具有两个数组的对象:名称和日历
//传递到后端函数并记录到工作表
函数createData(){
//获取所有复选框
var allcheckbox=document.getElementsByClassName(“已填写”)
//获取开始和结束日期的输入
var startdate=document.getElementById(“startdate”).value
var enddate=document.getElementById(“enddate”).value
//将日期获取为日期对象
var startDate=新日期(startDate)
var endDate=新日期(endDate)
var chosenNames=[]
//获取所有标记元素
var name=document.getElementsByTagName(“a”)
//将元素列表转换为数组
var namesArr=Array.from(名称)
//循环所有复选框
对于(变量i=0;i}; 客户端代码的一些问题可能隐藏在通信接口的细节中。如评论中所述,某些数据类型无法在Google Apps脚本后端和
HtmlService
客户端前端之间传递。特别值得注意的是

一般来说,除非传递单个值,否则通常会在将服务器端值发送到客户端之前将其序列化为JSON。这可以确保只传输可序列化的内容(因此不会尝试原始
Date
对象,也不会尝试本机应用程序脚本类对象)

此外,我发现这使得返回大响应更加稳定:在客户端,
return
可能偶尔会被视为
undefined
,而
return JSON.stringify()
将作为
JSON.parse
able参数安全到达

考虑到这一点,需要修改同步代码的使用。给定给SuccessHandler的
参数应该是函数变量或内联函数定义,例如

。。。
.withSuccessHandler(foo)
...
在名称空间的其他地方可以看到

函数foo(retVal,uObj){…}

constfoo=(retVal,uObj)=>{…};//或const foo=函数(retVal,uObj){…};
内联语法类似于:

。。。
.withSuccessHandler((retVal,uObj)=>{…})
//或
.withSuccessHandler(函数(retVal,uObj){…})
...
在所有这些情况下,使用两个参数调用成功处理程序—服务器端函数的返回值(
arg1
),以及指定给被调用的
google.script.run
任务运行程序(
arg2
)的“用户对象”

函数getCheckedNames(){ //获取所有复选框 const allcheckbox=Array.from(document.getElementsByClassName(“已填写”); //获得全部

  • (从理论上讲,您可以将一些附加参数预先传递给用作成功处理程序的函数,但我尚未对此进行研究。)

    如果有人能帮我指出错误,比如我没有正确使用命令等等,因为我还不擅长。很简单-你不能发送
    Date
    实例。你应该通过
    Date\getTime
    new Date()进行序列化和反序列化
    您应该能够在Stackdriver和常规浏览器控制台(从客户端UI)中查看后端错误(因为
    的默认故障处理程序是
    控制台
    for
    google.script.run
    )。哇,我要检查一下。谢谢!在我的.gs文件中,我使用了虚拟数据作为新日期(“2019年3月1日”)我准确地使用了日期(意思是dd-mmmm-yyyy)正如用户从日期选择器中选择的那样。关于客户机-服务器通信的其他注意事项也可能会有所帮助:此外,您在此处显示同步使用
    google.script.run
    ——您不能这样做。这是一个异步客户机,要使用后端函数的返回值,您必须使用成功处理程序。您是一个节约者!非常感谢您的帮助lp!!!我尝试了所有这些东西)试图实现这段代码,但在我添加了函数后,它破坏了可折叠元素。试图按照advic重新初始化可折叠元素