如果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/

我有一个javascript代码,它构造了一个要在浏览器中呈现的HTML,下面是我要问的javascript部分:-

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);