2023年政策修订增补工作正在进行中,欢迎参与!
說明:模塊中使用標籤
跳至導覽
跳至搜尋
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()
一定要弄清變量是否有指向自己想要的對象,自己是在賦值還是直接操作。
|