我希望能够使用JavaScript控制p标签中括号内文本的字体粗细。
例如: 牛跳过了{月球}。括号内的字体粗细将会增加。
这样,最终用户可以在文本区域中输入此类内容,并在提交后打印到页面上,改变大括号或花括号内的字体粗细。
如果有任何帮助,将不胜感激。
例如: 牛跳过了{月球}。括号内的字体粗细将会增加。
这样,最终用户可以在文本区域中输入此类内容,并在提交后打印到页面上,改变大括号或花括号内的字体粗细。
如果有任何帮助,将不胜感激。
var ps = document.getElementsByTagName('p');
foreach = Array.prototype.forEach;
foreach.call(ps, function (p) {
var content = p.innerHTML;
p.innerHTML = content.replace(/\{(.*?)\}|\((.*?)\)/g, function (m) {
return '<span style="font-weight: bold;">' + m + '</span>';
});
});
当然还有一个示例。
对于这个示例,您只需要使用纯JavaScript,不需要其他库。
如果您不想在结果中看到括号,可以使用:
var ps = document.getElementsByTagName('p');
foreach = Array.prototype.forEach;
foreach.call(ps, function (p) {
var content = p.innerHTML;
p.innerHTML = content.replace(/\((.*?)\)|\{(.*?)\}/g, function (m) {
return '<span style="font-weight: bold;">' + m.replace(/[\(\)\{\}]/g, '') + '</span>';
});
});
小提琴: http://jsfiddle.net/ma47D/4/
最好的问候!
你可以用mootools这样做:
window.addEvent('domready', function()
{
$$('P').each(function(p)
{
p.set('html', p.get('text').replace(/{([^\}]*)*}/g,"<b>$1</b>"));
});
});
domready很重要,因为它必须在页面完全加载后完成。转换为jQuery并不那么困难。
在本地,您可以像这样处理它:
<!DOCTYPE html>
<html>
<head>
<script>
function transfer(){
document.getElementById("result").innerHTML=document.getElementById("demo").value.replace(/{/g,'<strong>').replace(/}/g,'</strong>');
}
</script>
</head>
<body>
Input: <input type="text" name="input" id="demo"><br>
<input type="button" value="Submit" onclick="transfer();">
<p id="result"></p>
</body>
</html>
我的建议
<!DOCTYPE html>
<html>
<head>
<style>
p span {
font-size:1.5em;
}
</style>
<script>
function regex(){
document.getElementById("output").innerHTML=
document.getElementById("input").value.replace(/{(.*?)}/g, "<span>$1</span>");
};
</script>
</head>
<body>
<p id="output"></p>
<textarea id="input" rows="30" cols="80"></textarea>
<input type="button" value="Input" onclick="regex();"/>
</body>
<html>
当然,在提交之前,您需要对数据进行清理。
我尝试了一些方法,但我相信还有更优雅的解决方案。
$(document).ready(function(){
$(tb).blur(function(){
var str = '';
var nextFont = 0;
$.each($(tb).val(),function(i,char){
if(nextFont == 0){
if(char == '{'){
if($(tb).val().indexOf(i,'}')){
str += '<font size="15">';
nextFont = $(tb).val().indexOf('}', i);
} else {
str += char;
}
} else {
str += char;
}
} else if (nextFont === i) {
str += '</font>';
nextFont = 0;
} else {
str += char;
}
});
$("#txt").html(str);
});
});
font
标签已经被弃用,最好使用 strong
或 span
。if...else 结构可以简化很多,例如:http://jsfiddle.net/xT7Fg/1/。 - Stuart