如何将字符串作为参数传递JavaScript函数?

时间:2015-04-20 10:56:56

标签: javascript jquery html

我试图在Javascript函数中将一些HTML代码作为String传递,但它继续作为HTML代码执行,而不是作为参数执行,即使将引号用于将其分隔为字符串。

导航器不是作为参数而是作为HTML代码读取字符串。

这是img标签内的函数cancelVolet(),第4行:

function editVoletVisual(r){
    var x = new String(r.parentNode.parentNode.innerHTML);
    var y = x.replace('"','\"');
    r.parentNode.innerHTML="<input name=\"edtVolet\" type=\"text\" id=\"edtVolet\"><img src=\"ressources/images/dlt.png\" align=\"top\" id=\"canceler\" onclick=\"cancelVolet(\""+y+"\")\">";
}

问题在于: 单击编辑按钮(带纸和笔的图像) before

黄色突出显示的部分应该是一个参数,而不是要显示的HTML代码! after

我该如何解决这个问题,请帮忙?

2 个答案:

答案 0 :(得分:1)

我认为问题来自双重双引号。

onclick=\"cancelVolet(\""+y+"\")\">

这变为

onclick="cancelVolet("{the value of y}")">

onclick将只包含cancelvolet(,其余部分将显示。 试试

onclick=\"cancelVolet(\'"+y+"\')\">

以便您的浏览器将其解释为

onclick="cancelVolet('{the value of y}')">

答案 1 :(得分:0)

其中一个解决方案是使用encodeURI函数

r.parentNode.innerHTML= "<input ... onclick=\"cancelVolet(\""+encodeURI(y)+"\")\">"

并在cancelVolet函数内,使用decodeURI获取您应该参数的参数

function cancelVolet (param) {
   param = decodeURI (param);
   /* Your code here */
}
  

escapeunescape可以完成相同的工作,但they are deprecated