gpt4 book ai didi

javascript - 在循环中使用 setValue() 返回 "Uncaught error"

转载 作者:行者123 更新时间:2023-12-01 00:45:03 25 4
gpt4 key购买 nike

我正在尝试在表单上按“提交”后更新我的表单。提交后,页面不会迭代其余命令,并且会在控制台上显示错误“Uncaught at updateMan (Server:67) (Easy Roster) 3bf79b2b-341b-490f-87a8-b293d7ded973”。但是当我检查工作表时,这些值肯定已更改为我为每个单元格设置的新值。错误从何而来以及如何解决此问题?

//server side
function updateMan(data)
{
var ss = SpreadsheetApp.openByUrl(url);
var sheet = ss.getSheetByName("Easy Roster");
var length = data.length;

for (var i = 0; i < length; i++)
{
var max = length - 1;
var row = data[i] + 1;
var newMan = data[max];
sheet.getRange(row, 5).setValue(newMan);
}

return length;
}
//front-end
function updateData(e)
{
e.preventDefault();

var checkedRows = [];

var nRows = document.getElementById("tableBody").childNodes.length;


for (var i = 1; i < nRows; i++)
{
var checkbox = document.getElementById(i);

if (checkbox.checked)
{
var row = document.getElementById("row" + i).childNodes;
row[5].text == e.target["newManField"].value;
checkedRows.push(i);
}
}

checkedRows.push(e.target["newManField"].value);

console.log(checkedRows);

google.script.run
.withSuccessHandler(updateAlert)
.updateMan(checkedRows);
}

function updateAlert(data)
{
console.log(data);
alert("Employee details have been updated.");
window.open("link_to_page", '_top');
}

最佳答案

错误在于您上次调用 sheet.getRange(row, 5).setValue(newMan) 使用的是 data[max] 中的字符串 并连接有“1”。在循环之前从数组中删除最后一个元素。

这是 updateMan 的修改版本,它在功能上应该是等效的,但没有错误。

/**
* @param {mixed[]} data - list of row numbers, zero-indexed,
* final array element is a string
*/
function updateMan(data) {
var ss = SpreadsheetApp.openByUrl(url);
var sheet = ss.getSheetByName("Easy Roster");
var length = data.length;
var newMan = data.pop(); // removes "newMan" from array

data.forEach(function (row) {
sheet.getRange(row + 1, 5).setValue(newMan);
});

return length; // length prior to the pop - check if that's what you want
}

在您的客户端代码中,您发布的内容似乎包含拼写错误(尽管它与服务器的错误无关):

row[5].text == e.target["newManField"].value; // comparison that does nothing

我想你应该是这样的

row[5].textContent = e.target["newManField"].value; // assign some text content

关于javascript - 在循环中使用 setValue() 返回 "Uncaught error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57452953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com