传递onclick函数时,包含字符串的变量为空

时间:2016-11-15 23:30:43

标签: javascript function

我正在尝试使用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>";

1 个答案:

答案 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);
}