javascript - 使用 innerText 设置文本样式,同时仍然转义 HTML
问题描述
我想动态设置p
带有样式的元素的文本,但我不知道该怎么做。
这是我的 HTML 元素:<p id="delete-speaker-info-message"> </p>
这是我当前设置文本的代码:
document.getElementById("delete-speaker-info-message").innerHTML = `Are you sure you want to delete <b>${speakerName}</b> from <b>${eventName}</b>? This cannot be undone.`
虽然上面的代码有效,但扬声器名称和事件名称值是用户输入的,需要转义。我知道 innerText 可以做到这一点,但它也逃避了粗体标签。我确信有办法做到这一点,但我只是无法在网上找到它。谢谢您的帮助!
解决方案
你应该使用类似我的special
功能的东西:
//<![CDATA[
/* external.js */
var doc, bod, I, special, unspecial; // for use on other loads
addEventListener('load', function(){
doc = document; bod = doc.body;
I = function(id){
return doc.getElementById(id);
}
special = function(str){
return str.replace(/&/g, '&').replace(/'/g, ''').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
}
unspecial = function(str){
return str.replace(/&/g, '&').replace(/'/g, "'").replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
}
var speakerName = '<i>Cool Joe</i>', eventName = '<div>Keeping it Real</div>';
var deleteSpeakerInfoMsg = I('delete-speaker-info-message');
deleteSpeakerInfoMsg.innerHTML = 'Are you sure you want to delete <b>'+special(speakerName)+'</b> from <b>'+special(eventName)+'</b>? This cannot be undone.';
console.log(deleteSpeakerInfoMsg.innerHTML);
}); // end load
//]]>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<meta charset='UTF-8' /><meta name='viewport' content='width=device-width, height=device-height, initial-scale:1' />
<title>Test Template</title>
<link type='text/css' rel='stylesheet' href='external.css' />
<script type='text/javascript' src='external.js'></script>
</head>
<body>
<div id='delete-speaker-info-message'></div>
</body>
</html>
推荐阅读
- amazon-web-services - AWS Lambda 上的 .NET Core Web Api 在第一次请求时很慢
- google-maps - CN1 MapLayout 组件未像固定一样显示
- python - pandas - 每天获取一个数据框
- flutter - 页面导航完成后显示地图
- database - Boto3 : describe_db_instances() 仅返回单个结果
- python - Python按十进制格式排序排列
- javascript - 输出不显示(javascript)
- android - React Native - 是否可以使用 CameraRoll Api 访问相机?
- html-email - Cleverreach 的多列模板
- tableau-api - Tableau 可信身份验证不起作用