2016-09-14 230 views
-5

我的字符串${field.value}具有值在JavaScript字符串逃逸单引号和双引号

'<table id="tblUserList">    
     <tbody>     
     <tr> 
     <td style="padding: 10px;">some test' and "xyz"</td> 
     </tr> 
     </tbody 
     </table>' 

我曾尝试是

escapestring = '${field.value}' 

escapestring.replace("'", "\'"); 

document.getElementById("tblUserList").innerHTML = escapestring ; 

错误,它不工作

Uncaught SyntaxError: Invalid regular expression flags 

我想在some test' and "xyz"

中转义单引号和双引号

我试图让string safe for inserting into HTML table.

更新:值从服务器来了,我不能跳过的HTML元素串

的jsfiddle:https://jsfiddle.net/e3jehrc5/1/

任何帮助表示赞赏。

+2

你必须指定一些东西返回'escapestring = escapestring.replace(“'”,“\'”);' – Rajesh

+1

提供一个真正的[MCVE]。你说你正在使用'innerHTML'获取值,但是你的代码示例试图使用一个硬编码的字符串......并且有几个错误会阻止代码编译。你还需要描述你想达到的目标,“逃避”只有在上下文中才有意义。逃避什么?你是否想让字符串安全地插入到SQL中?你是否试图让它安全地插入到JSON中?还有别的吗? – Quentin

+0

拉动刹车......你从“innerHTML'中取出”,所以我假设你有类似'string = element.innerHTML'的东西。在这种情况下,没有什么可以逃脱的。如果你在你的Javascript代码中直接写HTML,你只需要转义字符串,但这与“从innerHTML中提取”有些相反,你需要在你的字符串中做这件事,而不是在'replace '... – deceze

回答

-2

使用本

var escapestring ='<table id="tblUserList"><tbody><tr><td style="padding: 10px;">some test'+"'"+' and "xyz"</td></tr></tbody></table>'; 
0

这里的字里行间......

escapestring = '${field.value}' 

我猜一些服务器端模板语言填写的${field.value}这里的价值。首先:你不应该动态地生成Javascript,通过AJAX等获取这个HTML片段将是一个更好的主意。

话虽如此,由于您的服务器在此动态生成Javascript源代码,因此需要注意生成句法有效代码。现在你只是天真地将一个字符串粘贴到另一个字符串中,而不考虑你正在制作的语法要求。您无法使用Javascript修复此问题,因为Javascript本身已经失效。您的模板语言需要将字符串正确编码为有效的Javascript。如何做到这一点完全取决于您的模板系统;这里有一个PHP例子:这里

var html = <?= json_encode($field->value); ?>; 

JSON编码产生有效的JavaScript文字,这是你正在寻找在这里所有。请参阅The Great Escapism (Or: What You Need To Know To Work With Text Within Text)