がコンテンツをロードし、私はから機能を変更しなければならなかったPrototypeJS Element.prototype.appendChild問題
document.observe('click', function(e, el) {
if (el = e.findElement('.userListHeaderCell.sortable')) {
el.toggleClassName('desc');
var colnumber = el.up().childElements().indexOf(el);
var content = el.up(2);
sortColumn(content, colnumber, el.hasClassName('desc'));
}
});
sortColumnは、次のようになります。
function sortColumn(content, colnumber, desc) {
content.select('.userListRow').sort(function(a,b){
var atext = a.down(colnumber).innerHTML.stripTags().toLowerCase();
var btext = b.down(colnumber).innerHTML.stripTags().toLowerCase();
return atext.localeCompare(btext) * (desc ? -1 : 1);
}).each(Element.prototype.appendChild, content);
}
トグルとコルナンバーの仕事とコンテンツはオブジェクトHTMLDivElementですが、コンテンツ変数を変換するか、anotheを使用する必要があるようですr関数ではなく、sortColumnに何が入っているのかわかりません。私が手にエラーがある:
"JavaScriptの引数を変換できませんでした" nsresult: "0x80570009(NS_ERROR_XPC_BAD_CONVERT_JS)" 場所: "JSフレーム:: https://www.someurl.com/scripts/prototype.js :: ::ライン804" のデータ:何なし]
私はこの仕事をするために変更する必要がありますか?
ありがとうございました。
EDIT:IEで
エラーが表示さ:プロパティの値を取得する はできません「と呼ぶ」:オブジェクトがnullまたは未定義prototype.jsのある、ライン804文字を9
私は問題がであると信じてElement.prototype.appendChild
Element.extend(content)を追加しようとしましたが、役に立たないようです。
例データ:
<div id="contentbox_Users" class="userList">
<div class="userListHeader">
<div class="userListHeaderCell col1 sortable">First Name</div>
<div class="userListHeaderCell col2 sortable">Last Name</div>
</div>
<div id="contentbox_People">
<div class="userListRow">
<div class="userListCell col1">John</div>
<div class="userListCell col2">Smith</div>
</div>
<div class="userListRow">
<div class="userListCell col1">Bob</div>
<div class="userListCell col2">Ray</div>
</div>
<div class="userListRow">
<div class="userListCell col1">Fred</div>
<div class="userListCell col2">Jones</div>
</div>
</div>
</div>
HTMLがなければ、スクリプトが正しい要素を選択しているかどうかを判断するのは難しいです。このようなエラーは通常、要素が見つからないことを意味します。 –
HTMLを投稿していただき、ありがとうございます。 – fanfavorite
"desc"のCSSに境界を設定し、クラス名が追加されたときに選択されている要素を確認します。何が起こっているのが分かるかが分かります。 –