フォームのテーブル行を「上へ」および「下へ」移動する機能をセットアップしようとしています。テーブル行の数は動的です。ユーザーはボタンを押して行を追加できます。各テーブル行には複数のフィールドがあります。ヘッダー行とフッター行にはクラス名が異なるため、hasClassNameのチェックが行われます。プロトタイプ1.5.1で兄弟要素を上下に移動するにはどうすればよいですか?
私は最初にこの機能をプロトタイプ1.6で使用するために書いた後、バージョン1.5.1で動作させる必要があることを認識しました。私たちは、テストに時間がかかっているときに、最新バージョンのPrototypeにアップグレードする予定ですが、私たちのプロジェクトの現在のバージョンで動作するために必要です。
主な問題は、1.5では挿入のコンテンツとして要素を挿入できないことです。つまり、挿入したい要素のHTMLが必要です。これは要素のHTMLにアクセスすると(変数 "insertHTML")、これは元のHTMLであり、ユーザーが関連するフォーム要素に入力した情報を含まないという問題を引き起こします。
ご協力いただければ幸いです。
moveDataDef: function(num, dir) {
var targRow = $('dataDefItem'+num);
var content = targRow.innerHTML;
var siblings;
var insertHTML = targRow.inspect() + targRow.innerHTML + '</tr>';
if(dir == 'up')
siblings = targRow.previousSiblings();
else
siblings = targRow.nextSiblings();
if (siblings[0].hasClassName('dataDefItem')) {
targRow.remove();
if(dir == 'up')
new Insertion.Before(siblings[siblings.length - 1].id, targRow);
else
new Insertion.After(siblings[0].id, targRow);
}
}
これは私のために働いていましたが、修正する必要があったif/else文にはいくつかの括弧がありませんでした。 これはPrototypeのAPIを使って書いたPrototype 1.6関数に非常に似ています。あなたのネイティブDOMコードはブラウザ間で動作しますか? –
訂正していただきありがとうございます。 IE8(すべてのモード)、Firefox 3、およびSafari 4ベータ版で動作します(私のPOCスクリプト)。互換性リストについては、Peter-Paul Koch(http://www.quirksmode.org/dom/w3c_core.html)を参照してください。 – Nordin