0

这是脚本的 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>

该脚本的作用:

  1. 它找出所有带有 class 的 div post-content
  2. 它检查是否有 bbcode 的结束标签。
  3. 通过使用正则表达式,它寻找给定 bbcode 标记的模式。
  4. 它用 html 元素替换 bbcode 标签。

我不知道我在这里做错了什么......

4

1 回答 1

2

innerHTML使用 jQuery 时不要使用。分配值时是错误的(内存泄漏),读取值时是一种不好的做法。利用

$(this).html()

或者,如果你真的想要,

$(this)[0].innerHTML

jQuery 对象返回一个没有属性的数组innerHTML。但话又说回来,使用.html()更多 jQuery 风格的代码。

于 2012-06-30T09:29:14.510 回答