使用 css 类和正则表达式将样式动态应用于文本的各个部分
Apply style to parts of text dynamically using css class and regex
我正在尝试弄清楚如何将样式仅应用于html文本的特定部分,即应用粗体样式直到到达第一个":"。我想我可以用 css 类和一些正则表达式来做到这一点,但我不知道怎么做。
基本上,我有一个列表,将带有文本的复选框加载到我的页面上,如下所示......
区域供应计划:确定满足未来供应需求所需资源的共识。
替代供应商:增加替代供应来源的开发。等。。。
我希望它看起来像这样,第一个单词以粗体显示,直到冒号......
区域供应计划:确定满足未来供应需求所需资源的共识。
替代供应商:增加替代供应来源的开发。等。。。
提供以下代码只是为了解释为什么我需要这样做,这是因为我从列表中获取数据库中的文本,并且没有任何其他方法来控制样式......
这是 html...
<div class="form-group">
<div class="col-sm-12">
<label>Strategic Initiatives</label><br />
<asp:CheckBoxList id="strategicInitiativeList" runat="server" ClientIDMode="Static" OnSelectedIndexChanged="strategicInitiativeList_SelectedIndexChanged" />
</div>
</div>
PageLoad 填充列表项,例如"项。名称"是保存我试图操作的文本的部分:
foreach (var item in strategicItems) {
si = new ListItem(item.Name, item.Id.ToString());
si.Attributes.Add("class", "checkBoxNoWrap");
strategicInitiativeList.Items.Add(si);
}
它当前应用的类定义如下:
.checkBoxNoWrap label {
display: inline;
padding-left: 5px;
font-weight: normal;
}
这是复选框在说完之后呈现的 HTML......
<table id="strategicInitiativeList">
<tbody><tr>
<td><span class="checkBoxNoWrap"><input id="strategicInitiativeList_0" type="checkbox" name="ctl00$MainContent$strategicInitiativeList$strategicInitiativeList_0" value="-1"><label for="strategicInitiativeList_0">None</label></span></td>
</tr><tr>
<td><span class="checkBoxNoWrap"><input id="strategicInitiativeList_1" type="checkbox" name="ctl00$MainContent$strategicInitiativeList$strategicInitiativeList_1" value="1"><label for="strategicInitiativeList_1">Regional Supply Planning: Identify resources necessary to meet future supply needs.</label></span></td>
</tr><tr>
<td><span class="checkBoxNoWrap"><input id="strategicInitiativeList_2" type="checkbox" name="ctl00$MainContent$strategicInitiativeList$strategicInitiativeList_2" checked="checked" value="2"><label for="strategicInitiativeList_2">Alternative Supplies: Increase development of alternative sources.</label></span></td>
</tr> etc...
任何建议将不胜感激。谢谢!
您可以使用:
foreach (var item in strategicItems) {
si = new ListItem(
"<span class='"lbl'">" + item.Name.Replace(":", "</span>:<span>") + "</span>",
item.Id.ToString()
);
si.Attributes.Add("class", "checkBoxNoWrap");
strategicInitiativeList.Items.Add(si);
}
。然后只需设置 .lbl 类的样式。
就我个人而言,我不会尝试通过CSS来做到这一点,我会使用JavaScript来做到这一点。下面是如何在 JavaScript 中执行此操作的示例。
示例 HTML:
<html>
<head>
</head>
<body>
<table id="strategicInitiativeList">
<tbody>
<tr>
<td>
<span class="checkBoxNoWrap">
<input id="strategicInitiativeList_0" type="checkbox" name="ctl00$MainContent$strategicInitiativeList$strategicInitiativeList_0" value="-1">
<label for="strategicInitiativeList_0">None</label>
</span>
</td>
</tr>
<tr>
<td>
<span class="checkBoxNoWrap">
<input id="strategicInitiativeList_1" type="checkbox" name="ctl00$MainContent$strategicInitiativeList$strategicInitiativeList_1" value="1">
<label for="strategicInitiativeList_1">Regional Supply Planning: Identify resources necessary to meet future supply needs.</label>
</span>
</td>
</tr>
<tr>
<td>
<span class="checkBoxNoWrap">
<input id="strategicInitiativeList_2" type="checkbox" name="ctl00$MainContent$strategicInitiativeList$strategicInitiativeList_2" checked="checked" value="2">
<label for="strategicInitiativeList_2">Alternative Supplies: Increase development of alternative sources.</label>
</span>
</td>
</tr>
</tbody>
</table>
<script src="makeMyTextBold.js"></script>
</body>
</html>
makeMyTextBold.js:
var myListItems = document.querySelectorAll("span.checkBoxNoWrap label");
var regExToFindTextToMakeBold = /.+?:/;
for (var myListIndex = 0; myListIndex < myListItems.length; myListIndex++) {
var myListItem = myListItems[myListIndex];
var match = regExToFindTextToMakeBold.exec(myListItem.innerHTML);
if (match) {
var lengthOfTextToBold = match[0].length;
var nonBoldText = myListItem.innerHTML.slice(lengthOfTextToBold);
myListItem.innerHTML = "<span style='font-weight: bold'>" + match[0] + "</span>" + nonBoldText;
}
}
相关文章:
- 将函数的上下文应用于javascript变量
- 将CSS应用于printWindow.print();在Javascript中
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- $scope.apply()何时应用于angular
- Javascript非常简单:'阅读更多''显示较少'应用于Wordpress的功能
- 尝试应用于<tr>在ng单击中
- 如何将javascript仅应用于1个表单中的2个表单提交按钮中的1个
- 将脚本应用于Angular 2上的输入
- Json和$scope的角度之间的差异$eval应用于JSON字符串时
- 如何将参数应用于String.prototype.format函数
- 动态地将过滤器应用于 JSON.parse()
- $location更改不适用于ngchange,而是应用于ngclick
- 如何将 :empty 选择器应用于 XML 文档
- 如何仅在文本字段中有值时才将自定义过滤器应用于 ng-repeat
- 如何使用 JavaScript 将样式应用于 CKEditor 中的选定文本
- MongoDB 无法将$addToSet应用于 Meteor JS 中的非数组
- 将类应用于jquery ui对话框
- 将CSS应用于在JavaScript中创建的表-表的位置不正确
- 债权人 - 将外部样式表应用于 CKEditor 文本区域中的内部文本
- 将2D画布(图像+文本)应用于3D表面,并进行360度旋转/动画-可以使用HTML5/CSS3/Javascript或F