.replace()无法在嵌入式JavaScript中运行

问题描述 投票:0回答:2

当我尝试运行以下代码时,它不会将&lt,>&#34替换为其等效的caharacters

<% if(typeof myTable !== 'undefined'){ %>
        <% myTable = myTable.replace('&lt','<').replace('&gt', '>').replace('&#34', '"') %>
        <script>
            localStorage['text'] += "<%= myTable %>";
        </script>
        <% myTable = undefined; %>
<% } %>

当我检查myTable的值,在ejs的plceholder标签中替换时,它仍然以原始形式包含这些字符。

myTable = "&lt;table class=&#34;table table-bordered table-hover&#34;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;"

我该怎么办?

javascript html node.js replace ejs
2个回答
2
投票

我会尝试存储替换字符串的值

<% myTable = myTable.replace('&lt','<').replace('&gt', '>').replace('&#34', '"') %>

否则它就会丢失。

来自docs

replace()方法在字符串中搜索指定的值或正则表达式,并返回一个新的字符串,其中替换了指定的值。

如果这不起作用,尝试一个未转义的蜂蜇版本:"<%- myTable %>";(而不是"<%= myTable %>";)。


1
投票

您应该注意到g标志并使用myTable = myTable.replace而不是myTable.replace

因为replace方法不会更改源字符串,请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace

请尝试以下代码:

var myTable = "&lt;table class=&#34;table table-bordered table-hover&#34;&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;th class=&#34;col&#34;&gt;&lt;p contenteditable=&#34;true&#34;&gt;Head&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p contenteditable=&#34;true&#34;&gt;Null&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;"
myTable = myTable.replace(/&lt;/g,'<').replace(/&gt;/g, '>').replace(/&#34;/g, '"');

console.log(myTable);
© www.soinside.com 2019 - 2024. All rights reserved.