0

というわけで、カードゲームのドミニオンをJavascriptで再現する作業をしています。私はOO Javascriptを使用して、カードごとにカードオブジェクトを作成しています。

ここにすべてのコードを投稿するのではなく、スペースを節約してリンクします。

サイト: http://people.rit.edu/lxl1500/Prog4/Project%201/project1.html

スクリプト: http://people.rit.edu/lxl1500/Prog4/Project%201/main-script.js

問題が発生している場所:

私の createActions() 関数では、各画像に onclick イベントを追加しています (各オブジェクトの smallImage プロパティを取得して画像を作成しています)。この onclick は、私の fullImage() 関数を呼び出す必要があります。この関数は、プレイヤーが詳細を確認できるように、単純にカードの拡大版を表示します。したがって、大きな画像のソースの文字列を保持する image プロパティを関数に渡したいと思います。

fullImage() は、オブジェクト プロパティを imageSrc として受け入れます。画像をクリックすると、未定義のアラートが表示されます。私が考えることができる唯一のことは、 fullImage(this.image) を呼び出しているときです-これは、オブジェクトではなく画像自体への参照です...私がやろうとしていることを達成する方法がわかりません. どんな助けでも大歓迎です!

お時間をいただきありがとうございます。

4

5 に答える 5

0

最近のブラウザでは、これを行います:card.addEventListener('click'、fullImage.bind(actionCards [i])、false);

于 2013-01-12T03:33:15.673 に答える
0

はい、 this.src 参照が必要なものを指していないことは正しいです。画像カードがクリックされると、javascript が実行されます

fullImage(this.image)

この JavaScript は、それを呼び出した img への接続を使用して実行されないため、Javascript はどの画像がそれを呼び出したかを認識できません。これに対する 1 つの修正方法は、カードのプロパティを設定するときに、正しい src url を関数呼び出しにハードコーディングすることです。

card.setAttribute("onClick","fullImage(this.image)");

これになります:

card.setAttribute("onClick","fullImage('" + card.src + "')");

このようにして、関数呼び出しが行われる前にカードの src が解決され、関数が呼び出されると、どの src をエコーするかが認識されます。

お役に立てれば!

引用符を含むように編集

于 2013-01-12T03:37:18.367 に答える
0

属性として設定onclickしています。何とかそれで作業できるかもしれませんが、イベント リスナーをアタッチする方がはるかに洗練されたソリューションです。

card.addEventListener('click', function() {
    // Handle click.
}, false);

その後actionCards[i]、通常どおり使用できます... ただしi、最後のインデックスに 1 がかかるため、ここには入りません。1これを修正する最も簡単な方法は、イベント リスナーとして追加する前に関数をバインドすることです。

card.addEventListener('click', function() {
    // Handle click.
}.bind(actionCards[i]), false);

(一部の古いブラウザーには組み込まれていないことに注意してくださいbind。ブラウザーの互換性について説明してaddEventListenerいますが、古いバージョンの Internet Explorer でもサポートされていません。)その後、 を使用してオブジェクトthisを参照できます。Card


脚注

1大丈夫です。これは JavaScript の関数スコープのためであり、ユーザーがクリックするとループが終了し、ループが終了iするとカードの数が 1 になります。

于 2013-01-12T03:25:04.160 に答える
0

this.image がある理由がわからない。image は image 要素のプロパティではありません。onClick イベント ハンドラーは、onclick が発生した要素に設定されたこのスコープで呼び出されることに注意してください。fullimage(this) だけに変更すると、img 要素が渡されていることがわかります。その後、fullimage メソッドを imageSrc.src = 'some url'; に変更できます。画像の src 属性を変更します。

于 2013-01-12T03:25:56.503 に答える
0

に変更fullImage(this.image)fullImage(this.src)てソースを取得します。

于 2013-01-12T03:27:28.000 に答える