使用 bbcode 解析器为 2 span 设置样式时的不同结果

问题描述

这里有什么不同?难道我做错了什么?是不是因为我的 BBCode 解析器?我相信这两个应该看起来像第一个例子。

<span style="color:#00369B"><span style="font-size:47px">aaaaaaaaaaaaaaaa</span></span>

结果:Image

<span style="font-size:47px"><span style="color:#00369B">aaaaaaaaaaaaaaa</span></span>

结果:Image 2

这是 SizeTag 的 BBCode 解析器代码

class SizeTag(Tag):
    def _to_html(self):
        size = self.params.get('size')

        try:
            size = int(size)
        except (TypeError,ValueError):
            size = None

        if size is None:
            return self.get_content()

        if size == 1:
            return u'<span style="font-size:11px">',self.get_content(),u'</span>',elif size == 2:
            return u'<span style="font-size:13px">',elif size == 3:
            return u'<span style="font-size:15px">',elif size == 4:
            return u'<span style="font-size:17px">',elif size == 5:
            return u'<span style="font-size:23px">',elif size == 6:
            return u'<span style="font-size:31px">',elif size == 7:
            return u'<span style="font-size:47px">',

这里是 ColorTag 的 BBCode 解析器代码

class ColorTag(Tag):
    def _to_html(self):
        color = self.params.get('color')

        if not color:
            return self.get_content()

        return u'<span style="color:%s">' % color,

BBCode 解析器取自 here

编辑:我的问题是第二个例子中的字体大小没有改变,当它是相同的代码时,只是写的不同。

编辑 2:问题似乎是字体大小,因为颜色适用于其他所有内容。我用列表和其他一些标签(如粗体或斜体)对其进行了测试。字体大小是这里的主要问题,当上面包含其他标签时它不起作用。

解决方法

其他在哪里?代码中只有 if、elif,没有 else。

必须在代码中的 elif 条件之后使用 else 条件。

这是我的建议。希望它有效