Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Quotes in Javascript

I have been trying for hours to fix this code, I can't see what's wrong:

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

The problem is in href="javascript ..." s_d is a javascript variable defined as

var num = 2;
var s_d = "sname"+num;
var ddmmyy = "ddmmyy";

Basically I need to call a javascript function with different parameter each time.

like image 656
sumit Avatar asked Dec 06 '25 03:12

sumit


2 Answers

Use a backslash like \'.

document.getElementById('detail'+num).innerHTML=
 '<a class="dobpicker" href="javascript:NewCal(\''+s_d+'\',\''+ddmmyy+'\')">'
like image 101
Daniel A. White Avatar answered Dec 08 '25 17:12

Daniel A. White


Since this is the value of a href attribute, HTML encode them:

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

Or better yet don't use the javascript: protocol:

[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);
});
like image 24
Richard JP Le Guen Avatar answered Dec 08 '25 16:12

Richard JP Le Guen