【发布时间】:2022-01-01 01:48:06
【问题描述】:
我想通过单击button 从表格中获取单元格值。我已经使用在按钮上实现的 Javascript 制作了一个 getDetail 函数,但我无法从函数中返回值。
<button class='btn btn-secondary' onclick='getDetail()'>Detail</button>
这是我从表格中获取详细信息的 Javascript 函数:
function getDetail(){
// get element value
var table = document.getElementById("tableID");
var myResult = {"db":"postgres"};
if (table) {
for (var i = 0; i < table.rows.length; i++) {
table.rows[i].onclick = function() {
tableText(this);
};
}
}
function tableText(tableRow) {
var schName = tableRow.childNodes[1].innerHTML;
var tblName = tableRow.childNodes[2].innerHTML;
var obj = {'table_name': tblName};
return obj;
}
let myData = Object.assign(myResult, obj);
console.log(myData);
$.ajax({
error:function (xhr, status, error) {
var err_msg = ''
for (var prop in xhr.responseJSON) {
err_msg += prop + ': ' + xhr.responseJSON[prop] + '\n';
}
console.log(err_msg)
},
success: function(){
console.log(obj)
}
});
}
我想将 obj 值作为对象返回。之后,我会将它与其他对象结合作为我的 AJAX 函数中的输入(稍后将结合 API 响应)。
但是,我无法从前一个函数返回 obj 值。
错误:
dashboard:511 Uncaught ReferenceError: obj is not defined
at Object.success (dashboard:511)
at c (VM10029 jquery.min.js:2)
at Object.fireWith [as resolveWith] (VM10029 jquery.min.js:2)
at l (VM10029 jquery.min.js:2)
at XMLHttpRequest.<anonymous> (VM10029 jquery.min.js:2)
预期的按钮被点击时的输出:
{db: 'postgres', table_name: 'actor'}
你能帮我解决这个问题吗?因为我是 javascript 的新手。谢谢。
【问题讨论】:
-
在
table.rows[i].onclick事件中你不应该返回tableText(this);吗?我认为您实际上在那里缺少return。您的tableText只是返回到匿名函数然后无处可去,即onclick没有返回。 -
你不能从
onclick函数返回,因为你之前的函数不会在自身中间暂停并等待用户点击某些东西(除非你创建一个 Promise和await它)
标签: javascript ajax bootstrap-4