这是脚本的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样式的代码。

10-08 19:43