如果javascript中的字符串包含';
我有一个javascript代码,它构造了一个要在浏览器中呈现的HTML,下面是我要问的javascript部分:-如果javascript中的字符串包含';,javascript,string,Javascript,String,我有一个javascript代码,它构造了一个要在浏览器中呈现的HTML,下面是我要问的javascript部分:- if (bodyValue && bodyValue.length >= 150) { var displayUrl = "/Lists/Feedback/DispForm.aspx?ID="+ctx.CurrentItem.ID+"&Source=https://***/Lists/UserFeedbackSystem/
if (bodyValue && bodyValue.length >= 150)
{
var displayUrl = "/Lists/Feedback/DispForm.aspx?ID="+ctx.CurrentItem.ID+"&Source=https://***/Lists/UserFeedbackSystem/AllItems.aspx"
newBodyValue = bodyValue.substring(0, 150) + "<a target='_blank' href='" + displayUrl + "'>...[Read More]</a>";
}
return "<span title='" + bodyValue + "'>" + newBodyValue + "</span>";
但是显示工具提示的title
属性将只显示字符串的这一部分(直到它到达”
):-
那么,有谁能建议我如何解决这个问题?还有哪些其他角色会导致这个问题
编辑
现在,我更新了我的代码,如下所示,以创建一个
,并获取它的outerHTML
,如下所示:-
function bodyFiledTemplate1(ctx) {
var bodyValue = ctx.CurrentItem[ctx.CurrentFieldSchema.Name];
var regex = /(<([^>]+)>)/ig;
bodyValue = bodyValue.replace(regex, "");
const span = document.createElement('span');
span.title = bodyValue;
span.textContent = bodyValue.slice(0, 150);
var newBodyValue = bodyValue;
if (bodyValue && bodyValue.length >= 150)
{
var displayUrl = "/Lists/Feedback/DispForm.aspx?ID="+ctx.CurrentItem.ID+"&Source=/Lists/UserFeedbackSystem/AllItems.aspx"
const a = span.appendChild(document.createElement('a'));
a.href = displayUrl;
a.target = '_blank';
a.textContent = '...[Read More]';
}
return span.outerHTML;
函数bodyFiledTemplate1(ctx){
var bodyValue=ctx.CurrentItem[ctx.CurrentFieldSchema.Name];
var regex=/(]+>)/ig;
bodyValue=bodyValue.replace(regex,“”);
const span=document.createElement('span');
span.title=bodyValue;
span.textContent=bodyValue.slice(0,150);
var newBodyValue=bodyValue;
如果(bodyValue&&bodyValue.length>=150)
{
var displayUrl=“/Lists/Feedback/DispForm.aspx?ID=“+ctx.CurrentItem.ID+”&Source=/Lists/UserFeedbackSystem/AllItems.aspx”
常量a=span.appendChild(document.createElement('a'));
a、 href=displayUrl;
a、 目标='u blank';
a、 text内容=“…[阅读更多]”;
}
返回span.outerHTML;
但是,如果在我的
bodyValue
中有以下字符串7:28
,它将被呈现为7:;28
。我没有测试其他字符…而不是处理转义问题,直接显式地分配给每个元素的属性可能会更容易管理,而不是尝试将字符串连接在一起以创建HTML标记(这既不美观,也容易出错,而且可能不安全)。例如,使用document.createElement
创建span
,并将其title
属性指定为:
const span = document.createElement('span');
span.title = bodyValue;
span.textContent = bodyValue.slice(0, 150);
if (bodyValue.length >= 150) {
const a = span.appendChild(document.createElement('a'));
a.href = displayUrl;
a.target = '_blank';
a.textContent = '...[Read More]';
}
return span;
然后,您可以使用appendChild
(或类似的内容)将返回的
附加到您想要附加到的任何容器中:
函数createSpan(){
乱数假文:“爱”。除偶尔因疏忽而死亡外,不得因工作原因而受到伤害;
constdisplayURL=https://example.com/';
const span=document.createElement('span');
span.title=bodyValue;
span.textContent=bodyValue.slice(0,150);
如果(bodyValue.length>=150){
常量a=span.appendChild(document.createElement('a'));
a、 href=displayUrl;
a、 目标='u blank';
a、 text内容=“…[阅读更多]”;
}
返回跨度;
}
const span=createSpan();
document.body.appendChild(span);
与其处理转义问题,不如直接显式地分配给每个元素的属性,而不是尝试将字符串连接在一起创建HTML标记(这既不美观,也容易出错,而且可能不安全)。例如,使用document.createElement
创建span
,并为其title
属性指定:
const span = document.createElement('span');
span.title = bodyValue;
span.textContent = bodyValue.slice(0, 150);
if (bodyValue.length >= 150) {
const a = span.appendChild(document.createElement('a'));
a.href = displayUrl;
a.target = '_blank';
a.textContent = '...[Read More]';
}
return span;
然后,您可以使用appendChild
(或类似的内容)将返回的
附加到您想要附加到的任何容器中:
函数createSpan(){
乱数假文:“爱”。除偶尔因疏忽而死亡外,不得因工作原因而受到伤害;
constdisplayURL=https://example.com/';
const span=document.createElement('span');
span.title=bodyValue;
span.textContent=bodyValue.slice(0,150);
如果(bodyValue.length>=150){
常量a=span.appendChild(document.createElement('a'));
a、 href=displayUrl;
a、 目标='u blank';
a、 text内容=“…[阅读更多]”;
}
返回跨度;
}
const span=createSpan();
document.body.appendChild(span)
你能介绍一下该函数是如何使用的吗?你准备将结果呈现为HTML吗?@CertainPerformance我更新了我的问题,是的,你是正确的..javascript将构建HTML以显示在浏览器中..构建一个HTML字符串不是一个好主意,你的'
与你的标题中的引用相匹配e='
并关闭。更好的方法是访问DOM元素并将其设置为innerText
属性。@Keith我想你指的是title
属性。@Barmar是的,但我也在考虑newBodyValue
位。..IOW:这更像是直接访问DOM元素的答案。我假设你是我在最后一条评论中说是。:)你能发布一些该函数是如何使用的吗?你准备将结果呈现为HTML吗?@CertainPerformance我更新了我的问题,是的,你是正确的..javascript将构建HTML以在浏览器中显示..构建HTML字符串不是一个好主意,你的'
正在匹配您的title='
中的引号并结束。更好的方法是访问DOM元素并设置它的innerText
属性。@Keith我想您指的是title
属性。@Barmar是的,但我也在考虑newBodyValue
位。..IOW:这更像是一个关于构建访问我想你在我的上一篇文章中看到我说yes
const span = document.createElement('span');
span.title = bodyValue;
span.textContent = bodyValue.slice(0, 150);
if (bodyValue.length >= 150) {
const a = span.appendChild(document.createElement('a'));
a.href = displayUrl;
a.target = '_blank';
a.textContent = '...[Read More]';
}
return span;
const span = createSpan();
container.appendChild(span);