将字符串作为为.setAttribute选择的函数的参数包含到javascript中的按钮
我希望能够使用setAttribute传递字符串作为按钮onclick函数的值。当我点击按钮时,我得到了“添加未定义”的错误,我不确定我做错了什么将字符串作为为.setAttribute选择的函数的参数包含到javascript中的按钮,javascript,Javascript,我希望能够使用setAttribute传递字符串作为按钮onclick函数的值。当我点击按钮时,我得到了“添加未定义”的错误,我不确定我做错了什么 var AddButton = document.createElement("button"); var AddString = "add"; var SectorString = "1_1"; AddButton.setAttribute("onclick",'AddOrDeleteDiv(AddString,Se
var AddButton = document.createElement("button");
var AddString = "add";
var SectorString = "1_1";
AddButton.setAttribute("onclick",'AddOrDeleteDiv(AddString,SectorString)');
function AddOrDeleteDiv(AddString, SectorString) {
//code
}
众所周知,js没有很好的字符串连接方法,请尝试使用与全局变量名不同的函数参数名,这不是一件好事
var AddButton = document.createElement("button");
var AddString = "add";
var SectorString = "1_1";
AddButton.setAttribute("onclick",'AddOrDeleteDiv(' + JSON.stringify(AddString) + ',' + JSON.stringify(SectorString) + ')');
function AddOrDeleteDiv(addStr, secStr) {
//code
}
或者,正如@Thomas所说,您可以使用类似的实际javascript事件处理程序,而不是修改属性来分配事件处理程序
AddButton.onclick = function(){AddOrDeleteDiv(AddString,SectorString);}
众所周知,js没有很好的字符串连接方法,请尝试使用与全局变量名不同的函数参数名,这不是一件好事
var AddButton = document.createElement("button");
var AddString = "add";
var SectorString = "1_1";
AddButton.setAttribute("onclick",'AddOrDeleteDiv(' + JSON.stringify(AddString) + ',' + JSON.stringify(SectorString) + ')');
function AddOrDeleteDiv(addStr, secStr) {
//code
}
或者,正如@Thomas所说,您可以使用类似的实际javascript事件处理程序,而不是修改属性来分配事件处理程序
AddButton.onclick = function(){AddOrDeleteDiv(AddString,SectorString);}
不要使用内容属性事件处理程序!改用事件侦听器:
var addButton = document.createElement("button");
var addString = "add";
var sectorString = "1_1";
addButton.addEventListener('click', function() {
addOrDeleteDiv(addString, sectorString);
});
function addOrDeleteDiv(addString, sectorString) {
//code
}
不要使用内容属性事件处理程序!改用事件侦听器:
var addButton = document.createElement("button");
var addString = "add";
var sectorString = "1_1";
addButton.addEventListener('click', function() {
addOrDeleteDiv(addString, sectorString);
});
function addOrDeleteDiv(addString, sectorString) {
//code
}
尝试用另一组引号封装
“添加”
:“添加”
。。。不是100%确定,但这可能会用单引号包装参数,并用双引号替换旧的单引号<代码>AddButton.setAttribute(“onclick”,“AddOrDeleteDiv”(“+add+”,“+SectorString+”)”)不要使用onclick属性,使用属性:AddButton.onclick=function(){AddOrDeleteDiv(“add”,“1_1”)}
并尝试用另一组引号封装“add”
。。。不是100%确定,但这可能会用单引号包装参数,并用双引号替换旧的单引号<代码>AddButton.setAttribute(“onclick”,“AddOrDeleteDiv”(“+add+”,“+SectorString+”)”)不要使用onclick属性,使用属性:AddButton.onclick=function(){AddOrDeleteDiv(“add”,“1_1”)}
看看你必须JSON.stringify()
将AddString
和SectorString
的值注入到一段代码中。你不需要单引号来扭曲参数吗?示例(\''+AddString+'\',
@Thomas no I don't如果您只是将字符串用引号括起来,那么一旦字符串包含相同的引号、反斜杠或换行符,您可能会遇到麻烦。这意味着您需要正确的转义。JSON.stringify是将字符串转换为正确格式的字符串文字的最佳方法(-string)。就像它是为这个任务构建的一样。@Thomas好吧,你是正确的,但是无论如何,属性修改对于这个问题来说是不必要的开销。无论如何,我会纠正它的。你必须JSON.stringify()
将AddString
和SectorString
的值注入到一段代码中。是否需要单引号来扭曲参数?示例(\''+AddString+'\',
@Thomas no I don't如果您只是将字符串用引号括起来,那么一旦字符串包含相同的引号、反斜杠或换行符,您可能会遇到麻烦。这意味着您需要正确的转义。JSON.stringify是将字符串转换为正确格式的字符串文字(-String)的最佳方法。就像它是为这个任务构建的。@Thomas好吧,你是对的,但是无论如何,属性修改对于这个问题来说是不必要的开销。无论如何,我会纠正itlistener关于什么的?:)你错过了添加事件name@MarkoMackic谢谢你告诉我什么?:)你错过了添加活动name@MarkoMackic谢谢