gpt4 book ai didi

javascript - 通过字符串将 html 对象传递给函数

转载 作者:行者123 更新时间:2023-12-02 18:25:28 24 4
gpt4 key购买 nike

我想我所拥有的有点不寻常。我有这个函数 deleteItem ,它在 onclick 时触发,并具有以下参数

function dItem(type,id,element,confirmed){
if(confirmed){
handle delete function
}else{
var c = ',';
popup('Are you sure you want to delete this item?',
{
"Yes":"dItem('"+type+"'"+c+id+c+element+c+true+")",
"Cancel":"popupClose()"
}
)
}
}

.. onclick='dItem("comment",15,this,false)' ..

popup()的第二个参数中传递要在弹出窗口中显示的按钮以及它们分别调用的函数。问题是 element 是一个 HTMLDIV 元素,我无法找到一种通过字符串传递它的简洁方法。我能想到的唯一解决方案是使用一个全局变量来保存有问题的元素并且根本不传递它,尽管我真的不想这样做,因为它更多的是一种黑客而不是解决方案。有人知道如何通过字符串传递该元素吗?提前致谢!

编辑:

这就是按钮对象 b 被处理并转换为 HTML 的方式。你知道我如何为它提供一个实际的函数,而不仅仅是一个字符串形式的名称吗?

var _b = '';
for(var i in b){
_b+="<div onclick='"+b[i]+"'>"+i+"</div>";
}

最佳答案

使用回调来处理这种情况更为常见。您需要更改弹出功能才能使其正常工作。

示例:

popup('Are you sure you want to delete this item?', {
"Yes": function () {
dItem(type, id, element, confirmed);
},

"Cancel": function () {
popupClose();
}
});
<小时/>

作为解决方法,您可以简单地为元素生成一个唯一的 ID,并在以后使用它来标识该元素。因为您的函数是递归的,所以您需要处理 element 可以是 ELEMENT_NODEstring 的事实。

for(var i in b){
var generatedId = i /* TODO: not sure this generates an unique id */;
_b += "<div id='" + generatedId + "' onclick='" + b[i] + "'>" + i + "</div>";
}

function dItem (type, id, element, confirmed) {
if (confirmed) {
// handle delete function
}else{
var elementId;

// find the elementId
if (element && element.nodeType && element.nodeType == 1) {
elementId = element.id;
}else if (typeof element == 'string') {
elementId = element
}else{
throw Error('Argument [element] is not a ELEMENT_NODE or string');
}

var args = [type, id, elementId, true];

popup('Are you sure you want to delete this item?', {
"Yes": "dItem(" + args.join(', ') + ")",
"Cancel": "popupClose()"
});
}
}

关于javascript - 通过字符串将 html 对象传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18430069/

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