Javascript I';我在单引号的属性中得到了双引号,我如何才能阻止它?
我有一个变量,并在其中存储了一个标记。我在双引号中设置了这个标记,并且我的标记有一些属性和事件,它们都在单引号中。现在的问题是,我在标记中得到了双引号,而以前是单引号。我想在一些属性的标记中使用单引号Javascript I';我在单引号的属性中得到了双引号,我如何才能阻止它?,javascript,jquery,Javascript,Jquery,我有一个变量,并在其中存储了一个标记。我在双引号中设置了这个标记,并且我的标记有一些属性和事件,它们都在单引号中。现在的问题是,我在标记中得到了双引号,而以前是单引号。我想在一些属性的标记中使用单引号 var test= "<tr><td><input type='text' class='demo_class' onchange='myfun(this,'val')'></td></tr>" var test=“” 它在浏览器中给
var test= "<tr><td><input type='text' class='demo_class' onchange='myfun(this,'val')'></td></tr>"
var test=“”
它在浏览器中给了我结果
<input type="text" class="demo_class" onchange="myfun(this,"val")">
但是我想
<input type="text" class="demo_class" onchange="myfun(this,'val')">
var测试='';
您需要用\symbole转义包含在同一引号类型中的引号
例如:
var test = '<tr><td><input type="text" class="demo_class" onchange="myfun(this,\'val\')"></td></tr>';
var测试=”;
否则,以“或”开头的字符串将被视为终止于遇到的第一个非转义的“或”
此外,在js中,分隔html属性值的引号始终解析为“独立于您使用的内容”或,这样就可以避免使用“符号”来分隔html属性值的混淆,如本例所示
document.body.innerHTML='';
您可以尝试两种方法:
test
var:result=sanitize(test);
“
和而不是简单的引号符号const Q=”“”
让测试=``
编辑
let测试=``
我得到了下面给出的解决方案
var test= "<tr><td><input type='text' class='demo_class' onchange='myfun(this,'val')'></td></tr>"
var test=“”
谢谢大家:)键入内联事件处理程序是一项要求吗?通常认为这是过时的做法,最好是添加数据属性并使用事件侦听器。我有一篇老帖子:可能是重复的我需要该事件和那些值,但你需要将其附加到HTML标记本身中,还是将其附加到HTML标记本身中通过使用javascript中的事件监听器连接它?我建议使用事件监听器,但在您的工作范围内做您需要的事情。它会在响应中使用双引号更正!!如果有帮助,请立即尝试!我已经在chrome和firefox上测试了这一点,并且保留了我对您的问题的理解。简单在您的控制台中测试:document.body.innerHTML='';我保留:也许您是如何使用此字符串更新html的?在哪个浏览器中?请将此标记为结束问题的答案。谢谢。
const sanitize = (str) => {
return String(str)
.replace(/"/g, "'");
};
const Q = """
let test= `<tr><td><input type=${Q}text${Q} class=${Q}demo_class${Q}
onchange=${Q}myfun(this,${Q}val${Q})${Q}></td></tr>`
let test= `<tr><td><input type='text' class='demo_class' onchange='myfun(this, 'val')'></td></tr>`
var test= "<tr><td><input type='text' class='demo_class' onchange='myfun(this,'val')'></td></tr>"