2


0

JavaScriptでマウスダウンイベントを記述する方法

これは非常に基本的なことですが、JavaScriptを使用することは間違いありませんが、苦労しているので、どんな助けでも感謝します。

オブジェクトの2番目の子ノード内で発生するmouseDownイベントを使用して、forループ内で関数を呼び出します。 斜体の部分は、これを行うための私の試みです。 ところで、swapFE関数はまだ進行中の作業です。 そしてもう1つは、斜体の部分をswapFE関数に入れるとすべてが正常に機能するが、forループに入れるとすべてが表示されないことです。 理由はわかりません。 私は基本的に、マウスでフレーズをクリックすると、フランス語のフレーズを英語のフレーズと交換しようとしています。

function setUpTranslation() {
   var phrases = document.getElementsByTagName("p");
   var swapFE = document.getElementsByTagName("phrase");

   for (i = 0; i

}

質問があれば教えてください。

ご協力いただきありがとうございます。

2 Answer


1


これにより、swapFEという名前のローカル変数を作成しています。

_ var swapFE = document.getElementsByTagName( "phrase"); _

次に、これでこの変数をmouseDownとして設定しています

_ phrases [i] .childNodes [1] .onMouseDown = swapFE; * _

そうではありません…​ onMouseDownは、その名前のローカル変数ではなく、関数名に設定する必要があります。 したがって、おそらくローカル変数の名前を別の名前に変更する必要があります。 これにより、少なくともソリューションに近づくことができます。


0


あなたのソースコードで何が失敗しているのかを推測することはできません。 まず、次のコードは、すべての「

タグには、少なくとも2つの子要素があります。

for (i = 0; i

もしあれば

ページ上のタグの子要素が2つ未満の場合、エラーがスローされ、スクリプトの実行が停止します。 これに対する最善の解決策は、各 ''にクラス属性を追加することです

探している要素を含むタグ。 あるいは、 `if`ステートメントで2番目の子ノードの存在を確認することもできます。 または、両方を行うことができます。

第二に、すべてのイベントと同様に、「onmousedown」は小文字で宣言する必要があります。 「onMouseDown」を設定してもエラーはスローされませんが、イベントハンドラーをアタッチする代わりに、要素にカスタムプロパティを作成します。

最後に、次のコード:

var swapFE = document.getElementsByTagName("phrase");

その関数のグローバル関数 `swapFE`をローカルでオーバーライドし、代わりに変数で置き換えます。

これは私があなたの `setupTranslation`関数を書く方法です:

function setUpTranslation() {
    var phrases = document.getElementsByTagName("p");
    // rename the swapFE var as outlined below
    var swapFENodes = document.getElementsByTagName("phrase");

    var cNode;  // set up an empty variable that we use inside the loop
    for (i = 0; i tag and the set the cNode var to childNodes[1]
           and testing for its existence at the same time */
        if (cNode.className != "translationPhrase"
             || !(cNode = phrases[i].childNodes[1]))
             continue; // skip to the next iteration

         phrases[i].number = i;
         cNode.innerHTML = french[i];
         cNode.onmousedown = swapFE;  // Changed onMouseDown to onmousedown
    }
}