我正在尝试使用onclick事件将字符串传递给函数。但是,当我单击链接时,函数内的变量不会返回任何内容。它是空的。当我将一个数字作为参数传递并且在警报中显示没有问题时,我没有任何问题。我不确定我做错了什么。
for (var j=0;j<current_order.length;j++){
var note_id = "note" + (j+1);
text = text + "<button onClick= 'deleteItemfromOrder("+j+")'>Delete</button>";
text = text + "<a id = '"+note_id+"' onClick= 'toggleNote("+note_id+")'>Notes</a>";
alert(text);
}
这是我试图将note_id传递给:
的函数function toggleNote(showHideDiv) {
alert(showHideDiv);
}
我尝试了多种方法将字符串作为参数传递给函数EG:
text = text + "<a id = '"+note_id+"' onClick= 'toggleNote('"+note_id+"')'>Notes</a>";
和
text = text + "<a id = '"+note_id+"' onClick= 'toggleNote(\'"+note_id+"\;)'>Notes</a>";
但是每次字符串在函数的另一侧显示为空时。如果我传递一个数字就没有问题,例如:
text = text + "<a id = '"+note_id+"' onClick= 'toggleNote("+2+")'>Notes</a>";
答案 0 :(得分:1)
你的问题是你缺少引号,数字不需要引号,如
onclick='toggleNote(3)'
但字符串
onclick='toggleNote("string")'
此外,使用相同的引号也不起作用
onclick='toggleNote('string')'
意味着你必须做
text = text + "<a id = '"+note_id+"' onClick= 'toggleNote(\""+note_id+"\")'>Notes</a>";
但实际上你应该做的是创造元素
for (var j = 0; j < current_order.length; j++) {
(function(i) {
var btn = document.createElement('button');
var anc = document.createElement('a');
btn.addEventListener('click', function() {
deleteItemfromOrder(i);
});
btn.textContent = 'Delete';
anc.addEventListener('click', function() {
toggleNote("note" + (i+1))
});
anc.textContent = 'Notes';
})(j);
}