0

これは私が関数 (インラインおよびハイジャック) をコーディングしたかった方法ではないことを前置きさせていただきますが、最後のオプションとしてソース コードを変更して、サード パーティのアプリ構成インターフェイスを回避する必要があります。

だから私はonclick関数を呼び出す画像を持っています

 <img src="images/button_closed.gif" id="img100023" border="0" 
  onclick="OnNodeImageClick(event, this)" href="theurl.cfm">

関数はvarsイベントを受け取り、これでURLを取得します

 function OnNodeImageClick(evt, clickedImage) {
    var href = clickedImage.getAttribute("href"); 
  ...

元のID番号を共有する別の要素でこれとまったく同じロジックを実行する必要があります

 <span id="node100023" >External Links</span>

私が試したのは、これをhtmlとして

 <span id="node100023" 
  onclick="javascript:OverwriteToTreeHandler($(this).attr('id'))">
  External Links</span>

そしてこれが私の機能として

 function OverwriteToTreeHandler(nodeID){
    var clickedItem = 'img'+nodeID.replace(/[^0-9]/g, '');  
        //tried $('body').find( clickedItem ) didnt work 
     OnNodeImageClick(event, clickedItem );
}

しかし、次のエラーが表示されます -> Uncaught TypeError: Object img100023 has no method 'getAttribute'

ただし、HTML で識別子を静的に割り当てることによって

私が試したのは、これをhtmlとして、私が望む結果を正確に得ることです

 <span id="node100023" 
  onclick="javascript:OnNodeImageClick(event, img100023)">
  External Links</span>

これはパラメーターと関係があると思います。要素を動的に取得しようとすると、オブジェクトとして登録されていませんが、これがどのように行われるかについては接続していません

ご協力ありがとうございます

4

1 に答える 1

2

OnNodeImageClickは DOM 要素であることが期待されます - 文字列を渡しています。これを試して:

function OverwriteToTreeHandler(nodeID) {
    var clickedItem = document.getElementById('img'+nodeID.replace(/[^0-9]/g, ''));

    OnNodeImageClick(event, clickedItem);
}

また、を呼び出す場合よりもthis.id(パフォーマンスと明快さの点で) 好ましいです。$(this).attr('id')OverwriteToTreeHandler

于 2012-12-12T17:53:51.523 に答える