Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在内联HTML中使用包含单引号的字符串作为Javascript参数_Javascript_Html - Fatal编程技术网

在内联HTML中使用包含单引号的字符串作为Javascript参数

在内联HTML中使用包含单引号的字符串作为Javascript参数,javascript,html,Javascript,Html,考虑以下Javascript(可能不是最好的样式): var string=“这里有一个错误”; parent.innerHTML=''+字符串+''; 由于是单引号,因此生成的HTML无效: '<div onclick="foo('There's an error here')">There's an error here</div>' “这里有个错误” 一种解决方案是使用元素自己的innerHTML作为foo()的参数(因为函数参数恰好与元素的内容相同)。然而,

考虑以下Javascript(可能不是最好的样式):

var string=“这里有一个错误”;
parent.innerHTML=''+字符串+'';
由于是单引号,因此生成的HTML无效:

'<div onclick="foo('There's an error here')">There's an error here</div>'
“这里有个错误”
一种解决方案是使用元素自己的
innerHTML
作为
foo()
的参数(因为函数参数恰好与元素的内容相同)。然而,这并不是一个通用的解决方案


是否可以仅使用内联HTML解决方案来处理此问题?在我的例子中,内联HTML要大得多,我无法轻松地将其转换为更“合适”的形式,使用DOM函数创建和附加HTML,并使用onclick函数的闭包

我想说,您的主要问题是尝试使用内联属性而不是使用
addEventListener
附加事件处理程序。如果你尊重良好的实践,你所有的问题都会消失

myDiv.addEventListener('click', function () {
    foo("There's an error here");
});
但是,如果您仍然想按自己的方式进行,您可以简单地避开单引号:

parent.innerHTML = '<div onclick="foo(\'' + string.replace(/'/g, "\\'") + '\');">' + string + '</div>';

parent.innerHTML='您到底想做什么?您能提供一个jsfiddle()吗?如果您知道这样做不好,为什么要考虑解决这个问题?为什么不把时间花在做好这件事上?@elclanrs我已经到了最后期限:P还有,我想知道这是否真的可行。如果不是这样的话,这会使上述方法在功能上而不仅仅是在风格上变得低劣。哦,很抱歉,尽管innerHTML会像(或与jQuery的)一样工作……哦,我明白了,那太好了。最后,这里是我所说的函数的代码(以防有人发现它有用):
function(p,s){var e=$('');e.html(s);e.click(function(){foo($(this.html());});p.append(e);}foo(\'+string+\')
,而不是内部HTML。内部HTML可以不带歧义地使用单引号。@1',哎呀,这只是一个粗心的错误。固定的。
parent.innerHTML = '<div onclick="foo(\'' + string.replace(/'/g, "\\'") + '\');">' + string + '</div>';