如何在桌面上打印我的数组并用排序数组替换

时间:2016-03-15 17:01:51

标签: javascript arrays sorting

我编写的代码可以在桌面上打印名称。如果我点击按钮,它应该用已排序的名称替换 例如,我有:

  • 约翰尼拉
  • 琥珀
  • 迈克尔

按下按钮后应替换为:

  • 琥珀
  • 约翰尼拉
  • 迈克尔

我的代码:

<div>
<ul>
    <script>
        var Tab = new Array('Johny', 'Amber', 'Michael')
        for (x=0; x<Tab.length; x++) { 
            w= "<li>" + Tab[x] + "</li>"
            document.write(w);
        }
        function myFunc(){
        var str = document.getElementById(w).value;
        var res = str.replace(w, Tab.sort());
        document.getElementById(w).innerHTML = res;
        }
    </script>
</ul>
</div>
<button type="button"  id="sort" onclick="myFunc()">Sort</button>

myFunc()有问题。 如何更换/覆盖它们?

2 个答案:

答案 0 :(得分:1)

如果您想多次编写列表,请为其创建一个函数。您将节省时间和代码。我称之为printTab。要使用JS访问 ul 标记,我已为其添加了一个ID:list。现在myFunc:让我们简单地对数组进行排序并再次打印。

<div>
<ul id="list">
    <script>
        var Tab = new Array('Johny', 'Amber', 'Michael')

        function printTab() {
          var w = '';
          for (x=0; x<Tab.length; x++) { 
            w += "<li>" + Tab[x] + "</li>"
          }

          document.getElementById("list").innerHTML = w;
        }

        // we must be sure that DOM is loaded if we want to manipulate on it
        document.addEventListener("DOMContentLoaded", function(event) {
            printTab();
        });

        function myFunc(){
          Tab.sort();
          printTab();
        }
    </script>
</ul>
</div>
<button type="button"  id="sort" onclick="myFunc()">Sort</button>

我的建议是将脚本放在比一些随机标签更好的位置,因为它会使HTML文档混乱,页面加载顺序非常随机。 JS脚本的最佳位置就在</body>之前。

答案 1 :(得分:0)

您必须引用正在修改其内部HTML的div的id。这是fiddle

  <html>
  <div id="stuff">
  </div>
  <button type="button" id="sort" onclick="myFunc()">Sort</button>

  <script>
    var Tab = new Array('Johny', 'Amber', 'Michael');

    function formList(Tab) {
      var w = "<ul>";
      for (x = 0; x < Tab.length; x++)
        w += "<li>" + Tab[x] + "</li>";
      w += "</ul>";
      return w;
    }

    document.getElementById("stuff").innerHTML = formList(Tab);

    function myFunc() {
      document.getElementById("stuff").innerHTML = formList(Tab.sort());
    }

  </script>

</html>