问题描述
这里有什么不同?难道我做错了什么?是不是因为我的 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 条件。
这是我的建议。希望它有效