2012-04-23 10 views
1

写真をアップロードするときに私のサイトにdivを追加するスクリプトがあります。今、私はこのdivが追加されたときに関数を呼び出すことを望んでいません。私はこれを試しましたが、うまくいきません。サイトにdivを追加するときに関数を呼び出す

var divImg = document.createElement("div"); 
divImg.id = "divimg"; 
newImg.setAttribute('onload','urediBtnx(this)'); 
divImg.innerHTML = '<a href=""><img src="/imago/images/btnx.gif" class="btnx"></a>'; 

それは、この関数を呼び出す必要があります。

function urediBtnx(dv){ 
    alert("blabla"); 
} 

を、私はこのようにそれを行うとの事は、その関数が呼び出されますが、私はdiv要素ではなく、IMGを取得する必要があります。

divImg.innerHTML = '<a href=""><img onload="urediBtnx(this)" src="/imago/images/btnx.gif" class="btnx"></a>'; 
+0

divに必要な理由を説明できますか? – McGarnagle

+0

ありがとう! – ifsession

答えて

0

ある場合は、本体、IMG、スクリプトやiframeのようではなく、DIVに要素にのonloadイベントハンドラを添付することができます得ることができます。

あなたのシナリオでは、divは画像の祖父母です。あなたは画像にonloadを保持し、次にthis.parentNode.parentNodeを使ってdivに到達することができます。

+0

私はこの方法の前にこれを試しました:dv.parentNode.idそして私は間違っていたものを見ます。ありがとう! – ifsession

1

まあ、彼らはロードされませんので、<div>年代はonloadを持っていません。ドキュメントがロードされ、イメージがロードされ、iframeがロードされます。divはちょうどです。あなたが望むものを実現するためには、appendChild()と呼ばれる同じコードからすぐにurediBtnx()に電話をかけて、divにドキュメントを挿入する必要があります。 (後でdivの内容を変更した場合は、そのコードから関数を再度呼び出す必要があります...)

+0

そして、もう一度Downvote Ninjaは、解説コメントなしで私の答えの一つを下落させました... –

0

Divにはonloadイベントがありません。それらは<body>,<frame>,<frameset>,,<img>,<link>または<script>に対してのみ利用可能です。

その後、DOMに追加された後に関数を呼び出すのは方法です。

parent.appendChild(divImg); 
urediBtnx(); 

コールバックの可能性は、あなたがjQueryライブラリ

$("#parent").append($(divImg), function() { 
    urediBtnx(); 
}); 
関連する問題