2023年政策修订增补工作正在进行中,欢迎参与!
Help:模块中使用标签
跳转到导航
跳转到搜索
MediaWiki为模块中提供了很多标签使用方法,皆为面向对象的。本页面介绍它们。
函数
mw.html.create(【标签名字】)
是使用对象的第一步。这个函数将返回一个标签对象。如果没有提供参数,则返回一个没有标签的空标签对象。
对象元方法
- __tostring
这个元方法使对象变为字符串。因此你可以使用tostring()
。
对象方法
- :wikitext(text)
向这个对象中输入text
,添加在关闭标签(空标签对象添加在末尾)的前面。text
可以是nil、字符串或数字。不能输入标签对象。如要使用,请先tostring()。返回结果为对象自身。
- :attr(attr,value)
向对象增加一个值为value
的attr
HTML属性。请注意这个方法会覆盖原有属性。返回结果为对象自身。
- :addClass(class)
向对象增加class
类。不会覆盖原有的。class
可以是包含一个或多个类的一个字符串。返回结果为对象自身。
- :cssText(css)
向对象增加css
的CSS文本。不会覆盖原有的。返回结果为对象自身。
- :css(style,value)
向对象增加一个值为value
的css
CSS属性。不会覆盖原有的。返回结果为对象自身。
- :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()
一定要弄清变量是否有指向自己想要的对象,自己是在赋值还是直接操作。
|