Javascript引用

时间:2011-12-15 20:08:34

标签: javascript html

我一直在努力修复这段代码,我看不出有什么问题:

document.getElementById('detail'+num).innerHTML='<a class="dobpicker" href="javascript:NewCal('+s_d+','+ddmmyy+')">'

问题在于href =“javascript ...” s_d是一个定义为

的javascript变量
var num = 2;
var s_d = "sname"+num;
var ddmmyy = "ddmmyy";

基本上我需要每次都调用一个带有不同参数的javascript函数。

3 个答案:

答案 0 :(得分:6)

使用\'之类的反斜杠。

document.getElementById('detail'+num).innerHTML=
 '<a class="dobpicker" href="javascript:NewCal(\''+s_d+'\',\''+ddmmyy+'\')">'

答案 1 :(得分:1)

由于这是href属性的值,因此HTML会对其进行编码:

document.getElementById('detail'+num).innerHTML='<a class="dobpicker" href="javascript:NewCal(&quot;'+s_d+'&quot;,&quot;'+ddmmyy+'&quot;)">'

或者更好的是不要使用javascript:协议:

[0,1,2,3,4,5].forEach(function(num) {
    var s_r = "sname"+num;
    var ddmmyy = "ddmmyy";
    var aEl = document.createElement("a");
    aEl.className = "dobpicker";
    aEl.onclick = function() {
        NewCal(s_d, ddmmyy);
    }
    document.getElementById('detail'+num).appendChild(aEl);
});

答案 2 :(得分:1)

您的.innerHTML设置正在使用s_d,但您的变量声明已s_r

编辑:那是第一件跳出来的东西。看起来更接近并意识到值是字符串,我认为修改变量名称与添加一些转义引号一样,如Daniel A. White的答案将会解决问题。