2017-10-30 13 views
-2

私のサーバーでこのコードが動作しない理由を理解できません。私は表のソート順:

<!DOCTYPE html> 
<html> 
<head> 
    <link href="design.css" rel="stylesheet" type="text/css" /> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
    <script type="text/javascript"> 
var mylist = $('#myTable'); 
var listitems = mylist.find('tr'); 
listitems.sort(function(a, b) { 
    return $(a).text().toUpperCase().localeCompare($(b).text().toUpperCase()); 
}) 
$.each(listitems, function(idx, itm) { mylist.append(itm); }); 
    </script> 
</head> 
<body> 
<table id="myTable"> 
<tr> 
<td>B</td> 
<td>12/01/2016</td> 
</tr> 
<tr> 
<td>A</td> 
<td>12/01/2016</td> 
</tr> 
</table> 
</body> 
</html> 
+0

テーブルが存在する前にテーブルを読み取ろうとしているためです。それはあなたのサンドイッチを作る前に食べるようなものです。 document.ready、window.onload、または要素がレンダリングされるまで待機する必要があります。 JSFiddleのようなサイトではJavaScriptコードがデフォルトで実行されますが、あなたの頭のようなものではありません。 – epascarello

答えて

1
は、右閉じ </body>タグの前に、あなたのスクリプトを動かすか $(document).ready()イベントハンドラを使用し

...何の問題もいくつかのコードの遊び場にそれをテストしました。

問題は、コードをプレイグランドで実行すると、HTMLの後に起動されますが、独自のサーバーを使用しているときにページが初期化される前に現在のコードが起動されることです。

+0

ああ。私がファイルを介してスクリプトを読み込むのはどうでしょうか?どこに置く? –

+0

@HristianYordanov、同じ。 '$(document).ready()'を使用している場合は問題ではありませんが、そうでない場合は ''タグの前に入れてください – semanser