按字母顺序排列带有Kindle标签的列表。这些标签叫什么?

时间:2017-01-12 11:26:53

标签: javascript alphabetical kindle

我正在尝试按字母顺序对列表进行排序。

有人可以帮我弄清楚mbp:framesetidx:entry标签的来源吗?

他们似乎没有回复getElementByTagName

这是代码。我已经尝试了几个版本来实现它的功能:

function sortUnorderedList(ul, sortDescending) {
  if (typeof ul == "string")
    ul = document.getElementByTagName("mbp:frameset");

  var lis = ul.getElementByName("french");
  var vals = [];

  for (var i = 0, l = lis.length; i < l; i++)
    vals.push(lis[i].innerHTML);

  vals.sort();

  if (sortDescending)
    vals.reverse();

  for (var i = 0, l = lis.length; i < l; i++)
    lis[i].innerHTML = vals[i];
}

window.onload = function() {
  var desc = false;
  document.getElementById("test").onclick = function() {
    sortUnorderedList("list", desc);
    desc = !desc;
    return false;
  }
}
<input type="button" id="test" value="Sort List (click again to reverse)" />
<mbp:frameset>
  <idx:entry name="french" scriptable="yes" spell="yes">
    <idx:orth><b>Notion B</b>
    </idx:orth>
    <p>Définition B</p>
    <br />
    <hr>
    <br />
  </idx:entry>
  <idx:entry name="french" scriptable="yes" spell="yes">
    <idx:orth><b>Notion A</b>
    </idx:orth>
    <p>Définition A</p>
    <br />
    <hr>
    <br />
  </idx:entry>
  <idx:entry name="french" scriptable="yes" spell="yes">
    <idx:orth><b>Notion C</b>
    </idx:orth>
    <p>Définition C</p>
    <br />
    <hr>
    <br />
  </idx:entry>
</mbp:frameset>

1 个答案:

答案 0 :(得分:0)

你有错字错误。 getElementByTagName应为getElementsByTagName。在s之后遗失Element。此外,您可以使用querySelector按属性获取。 [attribute='Value']

一个指针。使用window.onLoadelement.onclick是一种不好的做法。您应该使用.addEventListener。多次使用onclick=将替换以前的值。这可能会导致问题。

function sortUnorderedList(ul, sortDescending) {
  if (typeof ul == "string")
    ul = document.getElementsByTagName("mbp:frameset")[0];
  
  var lis = ul.querySelectorAll("[name='french']");
  var vals = [];

  for (var i = 0, l = lis.length; i < l; i++)
    vals.push(lis[i].innerHTML);

  vals.sort();

  if (sortDescending)
    vals.reverse();

  for (var i = 0, l = lis.length; i < l; i++)
    lis[i].innerHTML = vals[i];
}

window.addEventListener("load", function() {
  var desc = false;
  document.getElementById("test").addEventListener("click", function() {
    sortUnorderedList("list", desc);
    desc = !desc;
    return false;
  });
})
<input type="button" id="test" value="Sort List (click again to reverse)" /><br/>
<mbp:frameset>
  <idx:entry name="french" scriptable="yes" spell="yes">
    <idx:orth><b>Notion B</b>
    </idx:orth>
    <p>Définition B</p>
    <br />
    <hr>
    <br />
  </idx:entry>
  <idx:entry name="french" scriptable="yes" spell="yes">
    <idx:orth><b>Notion A</b>
    </idx:orth>
    <p>Définition A</p>
    <br />
    <hr>
    <br />
  </idx:entry>
  <idx:entry name="french" scriptable="yes" spell="yes">
    <idx:orth><b>Notion C</b>
    </idx:orth>
    <p>Définition C</p>
    <br />
    <hr>
    <br />
  </idx:entry>
</mbp:frameset>