当我尝试运行以下代码时,它不会将&lt,&gt,&#34替换为等效的字符
<% if(typeof myTable !== 'undefined'){ %>
<% myTable = myTable.replace('<','<').replace('>', '>').replace('"', '"') %>
<script>
localStorage['text'] += "<%= myTable %>";
</script>
<% myTable = undefined; %>
<% } %>
当我检查被ejs的plceholder标记替换的myTable的值时,它仍然具有原始格式的这些字符。
myTable = "<table class="table table-bordered table-hover"><thead><tr><th class="col"><p contenteditable="true">Head</p></th><th class="col"><p contenteditable="true">Head</p></th></tr></thead><tbody><tr><td><p contenteditable="true">Null</p></td><td><p contenteditable="true">Null</p></td></tr><tr><td><p contenteditable="true">Null</p></td><td><p contenteditable="true">Null</p></td></tr></tbody></table>"
我该怎么办?
答案 0 :(得分:2)
我会尝试存储替换后的字符串的值
<% myTable = myTable.replace('<','<').replace('>', '>').replace('"', '"') %>
否则它就丢失了。
从docs
replace()方法在字符串中搜索指定值或正则表达式,并返回新字符串,其中替换了指定值。
如果这不起作用,请尝试使用未经转义的蜂st版本:"<%- myTable %>";
(而不是"<%= myTable %>";
)。
答案 1 :(得分:1)
您应该注意到 g 标志,并使用 myTable = myTable.replace 而不是 myTable.replace
因为replace方法不会更改源字符串,请参见:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
请尝试以下代码:
var myTable = "<table class="table table-bordered table-hover"><thead><tr><th class="col"><p contenteditable="true">Head</p></th><th class="col"><p contenteditable="true">Head</p></th></tr></thead><tbody><tr><td><p contenteditable="true">Null</p></td><td><p contenteditable="true">Null</p></td></tr><tr><td><p contenteditable="true">Null</p></td><td><p contenteditable="true">Null</p></td></tr></tbody></table>"
myTable = myTable.replace(/</g,'<').replace(/>/g, '>').replace(/"/g, '"');
console.log(myTable);