Javascript 防止因'quote'符号而在连接过程中出错的常用方法
我将html标记组装为如下字符串:Javascript 防止因'quote'符号而在连接过程中出错的常用方法,javascript,Javascript,我将html标记组装为如下字符串: var tag = '<div some-attribute="' + attributeValue + '">'; var tag = "<div some-attribute=\"" + attributeValue + "\">"; var标签=“”; 问题是如果attributeValue包含引号“,标记将被组装成一个错误。避免这种情况的常用方法是什么?我正在寻找一种解决方案,可以解释引号符号的所有可能变化。您可以使用en
var tag = '<div some-attribute="' + attributeValue + '">';
var tag = "<div some-attribute=\"" + attributeValue + "\">";
var标签=“”;
问题是如果
attributeValue
包含引号“
,标记将被组装成一个错误。避免这种情况的常用方法是什么?我正在寻找一种解决方案,可以解释引号符号的所有可能变化。您可以使用encodeURIComponent
全局方法,该方法将从字符串中转义特殊字符
使用decodeURIComponent
var attributeValue = '"some'
var tag = '<div data-some-attribute="' + encodeURIComponent(attributeValue) + '">';
tag // "<div some-attribute="%22some">"
您可以使用
encodeURIComponent
global方法,该方法将从字符串中转义特殊字符
使用decodeURIComponent
var attributeValue = '"some'
var tag = '<div data-some-attribute="' + encodeURIComponent(attributeValue) + '">';
tag // "<div some-attribute="%22some">"
我建议您在Javascript中使用
“
双引号,并在字符串中包含”
单引号,这些单引号将被html理解。或者相反
您还可以通过在引号前面放置一个\
来转义要在字符串中的引号,而不是分隔的一部分
您的示例如下所示:
var tag = '<div some-attribute="' + attributeValue + '">';
var tag = "<div some-attribute=\"" + attributeValue + "\">";
我还建议您查看关于如何使用Javascript创建和附加元素的更完整的响应。我建议您在Javascript中使用
“
双引号,并在字符串中包含html可以理解的”
单引号。或者相反
您还可以通过在引号前面放置一个\
来转义要在字符串中的引号,而不是分隔的一部分
您的示例如下所示:
var tag = '<div some-attribute="' + attributeValue + '">';
var tag = "<div some-attribute=\"" + attributeValue + "\">";
我还建议您查看关于如何使用Javascript创建和附加元素的更完整的回答。解释说,如果属性值用双引号括起来,那么属性值中只有两个字符无效:
如果属性值被引用(以双引号开始和结束)
),则除双引号和符号外的所有字符都是
允许,必须引用为“
和&代码>
因此,我只替换了这两个字符,然后将属性值视为安全的:
var safe = attributeValue.replace("&", '&').replace('"', '"');
var tag = '<div some-attribute="' + safe + '">';
var-safe=attributeValue.replace(“&”、“&;”).replace(“,”);
var标签=“”;
解释说,如果属性值用双引号括起来,则属性值中只有两个字符无效:
如果属性值被引用(以双引号开始和结束)
),则除双引号和符号外的所有字符都是
允许,必须引用为“
和&代码>
因此,我只替换了这两个字符,然后将属性值视为安全的:
var safe = attributeValue.replace("&", '&').replace('"', '"');
var tag = '<div some-attribute="' + safe + '">';
var-safe=attributeValue.replace(“&”、“&;”).replace(“,”);
var标签=“”;
常用的方法是避免使用字符串连接来生成HTML。改用JS模板var tag=document.createElement('div');setAttribute(“某个属性”,attributeValue);附加子元素(标记)
@NiettheDarkAbsol,谢谢,但是如果html字符串很大并且包含占位符,而我无法控制它的创建方式,该怎么办?尤其是对于一个巨大的元素,强烈建议创建一个可以直接应用变量的DOM对象。常用的方法是避免使用字符串连接来生成html。改用JS模板var tag=document.createElement('div');setAttribute(“某个属性”,attributeValue);附加子元素(标记)
@NiettheDarkAbsol,谢谢,但是如果html字符串太大并且包含占位符,而我无法控制它的创建方式,那该怎么办?特别是对于一个巨大的元素,强烈建议您创建一个可以直接应用变量的DOM对象。@Maximus如果需要,您将不得不再次还原值EAH,目前,我不希望用户在属性中使用引号或符号value@Maximus您还可以通过在输入字符时去掉这些字符来强制执行正确的格式设置value@Maximus如果需要,您还必须恢复值EAH,目前,我不希望用户在属性中使用引号或符号value@Maximus您还可以通过在输入值时去掉这些字符来强制执行正确的格式设置