防止由于“引号”符号而导致串联时出错的常用方法
Common approach to prevent error during concatenation because of a `quote` symbol
我正在把一个html标签组装成这样的字符串:
var tag = '<div some-attribute="' + attributeValue + '">';
问题是,如果attributeValue
包含引号"
,则会在组装标签时出现错误。避免这种情况的常见方法是什么?我正在寻找一个解决方案,考虑到所有可能的报价符号的变化。
您可以使用encodeURIComponent
全局方法,该方法将从字符串中转义特殊字符;
你只需要在用decodeURIComponent
访问它时对它进行解码
var attributeValue = '"some'
var tag = '<div data-some-attribute="' + encodeURIComponent(attributeValue) + '">';
tag // "<div some-attribute="%22some">"
访问它
var attribute = decodeURIComponent(div.getAttribute('data-some-attribute'));
attribute // "some
我建议您在Javascript中使用 您还可以通过在字符串中的引号之前放置 您的示例如下: 但最佳解决方案是动态创建一个对象,将属性添加到其中。 我还建议您查看另一个问题,并获得关于如何使用Javascript创建和附加元素的更完整的回答。"
双引号,并在字符串中包含html可以理解的'
单引号'
来转义它们,而不是分隔符的一部分。var tag = "<div some-attribute='"" + attributeValue + "'">";
var tag = document.createElement('div'); // this creates a DOM div element
tag.setAttribute("some-attribute", attributeValue); // this changes the some-attribue to the value (could use with class)
containerElement.appendChild(tag); // this appends the newly created element as html in the container
这个答案解释了如果属性值用双引号括起来,那么一个属性值中只有两个字符无效:
如果您的属性值有引号(以双引号开始和结束"),则除双引号和与号之外的任何字符都是允许,必须引用为
"
和&
所以我只替换了这两个字符,然后将属性值视为安全的:
var safe = attributeValue.replace("&", '&').replace('"', '"');
var tag = '<div some-attribute="' + safe + '">';
- 为什么我得到“;没有方法'indexOf'"在ExtJS4.2中尝试在网格上使用缓冲渲染器时出错
- 出错时更改文本字段边框的最简单方法
- 在ember.js中保存对象时出错:'对象X没有方法'保存''
- 在NPObject上调用方法时出错:(一个理想的)PhoneGap项目
- "无法调用方法'打开'未定义的“;使用indexedDB.open时出错
- css 可见性属性和 javascript setTimeout 方法出错
- 如何检查我们是否在使用 angularJs $http方法时出错
- 如何在 JavaScript 中测试方法而不会出错
- 提示用户在Google Apps Script上输入,“getUi()”方法出错
- 尝试使用 angularjs 拦截器时出错 未捕获 获取 无法调用未定义的方法“推送”
- 从 JavaScript 函数调用 C# 方法背后的代码时出错
- Ext.window.MessageBox 可拖动 false,调用隐藏方法时出错
- 未捕获的错误:在 NPObject 上调用方法时出错
- 使用 Firebase OauthToken 方法进行身份验证时出错
- jQuery+Edge Animate:仅当从单击事件调用时才出错:对象 [对象对象] 没有方法“基础”
- 未捕获错误:在嵌入Youtube视频的NPObject错误上调用方法时出错
- 对象没有方法“”;打开“;使用indexedDB时出错
- 调用方法'时出错;headersToken'将MessageFormat添加到Meteor应用程序后
- 几个实习方法出错
- 将字符串变量传递给方法时出错