Help:模块中使用标签
跳到导航
跳到搜索
MediaWiki为模块中提供了很多标签使用方法,皆为面向对象的。本页面介绍它们。
函数
mw.html.create(【标签名字】)是使用对象的第一步。这个函数将返回一个标签对象。如果没有提供参数,则返回一个没有标签的空标签对象。
对象元方法
- __tostring
这个元方法使对象变为字符串。因此你可以使用tostring()。
对象方法
- :wikitext(text)
向这个对象中输入text,添加在关闭标签(空标签对象添加在末尾)的前面。text可以是nil、字符串或数字。不能输入标签对象。如要使用,请先tostring()。返回结果为对象自身。
- :attr(attr,value)
向对象增加一个值为value的attrHTML属性。请注意这个方法会覆盖原有属性。返回结果为对象自身。
- :addClass(class)
向对象增加class类。不会覆盖原有的。class可以是包含一个或多个类的一个字符串。返回结果为对象自身。
- :cssText(css)
向对象增加css的CSS文本。不会覆盖原有的。返回结果为对象自身。
- :css(style,value)
向对象增加一个值为value的cssCSS属性。不会覆盖原有的。返回结果为对象自身。
- :tag(name)
创建一个新的name标签对象,然后向原来对象中输入这个新对象,添加在关闭标签的前面(空标签对象添加在末尾),并将原来对象设置为新对象的一个属性(父对象)。返回结果为新的对象。
- :done()
- 返回这个标签对象的父对象。
- 如果没有,则新建一个空的标签对象,然后将原对象设为新对象的子对象,并返回新对象。请注意这个方法不对对象造成任何更改,因此若不在赋值时使用则不能放在最后一个方法!!!
注意
- Lua中缩进是会被忽视的,但缩进方便阅读。建议:
- 对所有写在同一对象后的方法增加一缩进。
- 每一次使用
:tag(name)增加一缩进。 - 每一次使用
:done()(第一种情况)减少一缩进。
- Lua中写在同一对象后的方法都属于同一语句,排列方法实际上是一个方法用前一个方法的返回结果。因此,当你写下面代码,变量obj在
:done()之前是没有值的。并且只有:done()后面可以加分号。当然你可以全都不换行,但那怎么好看呢?
obj = mw.html.create("div")
:addClass("foo")
:tag("span")
:css("color","#114514")
:wikitext("bar")
:done()
- 此外,如果不
:done(),obj就成了一个span而不是div。 - 不过,div对象仍然存在于内存中。您可以这样调用它:
obj = obj:done()
记住不能漏掉“obj =”,因为:done()不作任何操作,只返回值。
- 让我们来看看下面两个的区别:
obj = mw.html.create("div")
obj:addClass("foo")
:tag("span")
:css("color","#114514")
:wikitext("bar")
:done()
:wikitext("emm")
obj = mw.html.create("div")
:addClass("foo")
:tag("span")
obj:css("color","#114514")
:wikitext("bar")
:done()
:wikitext("emm")
两者区别在于,第一个执行完毕后是div,而第二个是span。这就告诉我们使用:done()一定要弄清变量是否有指向自己想要的对象,自己是在赋值还是直接操作。
| |||||||||||||||||||||||||||||||||||