2016-09-14 127 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)