跳转到内容

User talk:Shizhao/uptrends.js

页面内容不支持其他语言。
维基百科,自由的百科全书

再重写了一下[编辑]

if ($("div#uptrends").hasClass("uptrends")){
  (new mw.Api()).get({
    format: 'json',
    action: 'query',
    list: 'mostviewed',
    pvimlimit: 50,
  }).done(function (data) {
    var mainspace = data.query.mostviewed.filter(function (item) {
        return item.ns === 0
    })
    var popular10 = mainspace.slice(0, 10)
    var elements = popular10.map(function (item) {
      var a = document.createElement('a')
      a.href = mw.util.getUrl(item.title)
      a.title = item.title
      a.dataset.views = item.count
      a.innertext = item.title
      var li = document.createElement('li')
      li.appendChild(a)
      return li
    })

    var ul = document.createElement('ul')
    elements.forEach(function (li) {
      ul.appendChild(li)
    })

    // 一个个换什么的烦死了,直接从零造换 ul 好了
    var uptrends = document.getElementById('uptrends')
    var oldul = $(uptrends).find(ul)  // 听说要照顾没有 querySelector 的人
    if (oldul === null)
      uptrends.appendChild(ul)
    else
      uptrends.replaceChild(ul, oldul)
  })
}

这里特地把 data 改成了 data-views。不然不清真。

理论上 JQuery 浪费那么多次的结果一次次eq(i)挺浪费的。——Artoria2e5 讨论要完整回覆请用ping 2017年4月4日 (二) 02:13 (UTC)[回复]