这是脚本的jQuery变体(不起作用):
<script language="javascript">
$("div.post-content").each(function(){
if($(this).innerHTML.indexOf("[/float]") != -1) {
pattern= /\[float=(.*?)\]([^\[]*)\[\/float\]/gi
$(this).html($(this).innerHTML.replace(pattern, "<span style='float: $1;'>$2</span>"))
}
})
</script>
这是纯Javascript变体(完美运行):
<script language="javascript">
posts=document.getElementsByTagName("div")
for(x in posts) if(posts[x].className=="post-content") {
post = posts[x].innerHTML;
if(post.indexOf("[/float]") != -1) {
pattern = /\[float=(.*?)\]([^\[]*)\[\/float\]/gi
posts[x].innerHTML = posts[x].innerHTML.replace(pattern, "<span style='float: $1;'>$2</span>")
}
}
</script>
该脚本的作用:
它查找所有类为
post-content
的div。它检查bbcode是否有结束标记。
通过使用正则表达式,它可以查找给定bbcode标签的模式。
它将bbcode标签替换为html元素。
我不知道我在这里做错了什么...
最佳答案
使用jQuery时不要使用innerHTML
。分配值时是错误的(内存泄漏),而读取值时的错误做法是错误的。采用
$(this).html()
或者,如果您真的想要,
$(this)[0].innerHTML
jQuery对象返回一个数组,该数组没有
innerHTML
属性。但是,再次使用.html()
编写更多类似jQuery样式的代码。