-1

photos []は写真名の配列であり、

foreach($photos as $key=>$value)
{
    @$blocks .= '<div><img src="'.$value.'" onload="img=this"><img src="remove.png" onclick=remove_image(img)></div>';
}

したがって、最初の写真の削除アイコンをクリックすると問題なく機能しますが、他の写真には次のエラーが表示されます。

ReferenceError: img is not defined

4

3 に答える 3

3

変数はグローバルに保存されています。imgつまり、新しい画像が読み込まれるたびに上書きされます。代わりに、画像に一意のIDを割り当て、削除ボタンで画像をIDで削除する必要があります。例えば:

foreach($photos as $key=>$value)
{
    @$blocks .= '<div><img src="'.$value.'" id="img'.$key.'"><img src="remove.png" onclick=remove_image(document.getElementById("img'.$key.'"))></div>';
}

(私はPHPにあまり詳しくないので、どこかで構文エラーが発生した場合は申し訳ありません)

于 2012-11-03T15:22:03.393 に答える
1

LukeGTに感謝します。あなたの答えは正しいですが、jqueryを使用して処理する方が良いと思いました。

onclick="remove_image($(this).prev())"

また

onclick="remove_image($(this).parent())"

div全体を削除します。

于 2012-11-03T16:16:22.353 に答える
0

削除ボタンをクリックしたときにページを更新する必要があります。

于 2012-11-03T15:21:56.683 に答える