当通过onclick函数传递时,包含字符串的变量为空
我正尝试使用onclick事件将字符串传递到函数中。但是,当我点击链接时,该函数内的变量不会返回任何内容。它是空的。当我将一个数字作为参数传递并且没有问题显示在警报中时,我没有任何问题。我不确定我做错了什么。当通过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>";
H无论何时该字符串在函数的另一侧显示为空。有没有问题,如果我通过一些如:
text = text + "<a id = '"+note_id+"' onClick= 'toggleNote("+2+")'>Notes</a>";
你的问题是,你错过了引号,数字不用引号中,如
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);
}
或只是引用id,不用担心传递字符串。 – epascarello
这很好。无论我在哪里看,但他们使用单引号和语音标记像javascript中的双引号字符串。我怎么知道何时何地使用不同的和何时使用转义我认为它被称为(这些\ backslashes)。 –
@FKhan - 如果你有一个属性,并且该属性使用单引号,那么它内部的任何内容都必须使用双引号,否则当你添加单引号时该属性是关闭的,并且由于你的字符串是用javascript中的双引号定义的,被转义为不关闭字符串文字。 – adeneo
也可以有人说为什么这已经downvoted? –