我试图在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+"\")\">";
}
问题在于:
单击编辑按钮(带纸和笔的图像)
黄色突出显示的部分应该是一个参数,而不是要显示的HTML代码!
我该如何解决这个问题,请帮忙?
答案 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 */
}
escape
和unescape
可以完成相同的工作,但they are deprecated。