1

すべての JavaScript を別のドキュメントに保存したいのですが、その方法が気に入っています。ここで、HTML コードから別の JavaScript ドキュメントに移動するコードの最後の部分で問題が発生しました。

次のような 2 つのイベント ハンドラを取得しました。

<a href="http://www.commercial.se" onclick="confirmLeave()" target="_blank"> 

<IMG SRC="folder/pic_small.jpg" alt="Description"  onClick="view(this);">

これは、2 つのイベント ハンドラの JavaScript コードです。

function confirmLeave()
{
  if(confirm("Vill du lämna Blomstermåla-Bladet?")) {
    return true;
  } else {
    if(window.event) {
      window.event.returnValue = false;
    } else {
      e.preventDefault();
    }
    return false;
  }
}

function view(img) {
   imgsrc = img.src.split("_")[0] + "_big.jpg";
   viewwin = window.open(imgsrc,'viewwin', "width=790,height=444,location=0");  
  viewwin.focus();  
}

HTML を次のように変更することで、最初の onClick イベントハンドラの HTML ドキュメントに JavaScript コードがないという問題を解決できました。

<a href="http://www.commercial.com" id="external-link" target="_blank"> 

そして、これを私のJavaScriptドキュメントに追加します:

function init()
{
    var link = document.getElementById("external-link");

    link.onclick = confirmLeave;
}

window.onload = init;

同様のソリューションを他のイベントハンドラーに追加しようとしましたが、それを機能させるために使用する必要があるコードがわかりません。そのイベント ハンドラを init 関数にも追加する方法を知りたいです。

4

2 に答える 2

1

関数を変更したくない場合はview、関数の引数として画像を渡す必要があるというわずかな違いを除いて、同様のことを行うことができますview。これを行うには、匿名関数をクリックハンドラーとして設定します。

<IMG SRC="folder/pic_small.jpg" alt="Description" id="some-img">
function init()
{
    var img = document.getElementById("some-img");

    img.onclick = function(){
        view(this);
    };
}
于 2013-01-04T17:53:40.910 に答える
1

これを試して

 <a href="http://www.commercial.com" class="external-link" target="_blank"> 
 <IMG SRC="folder/pic_small.jpg" alt="Description" id = "external-image">

    function init() {
    var link = document.getElementById("external-link");

    var links = document.getElementsByClassName("external-link");
    for (var i = 0; i < links.length; i++) {
        links[i].onclick = confirmLeave;
    }

    var image = document.getElementById("external-image");
    image.onclick = view;
}

window.onload = init;​

関数内のimgの代わりに、これを使用してください

function view() {
   imgsrc = this.src.split("_")[0] + "_big.jpg";
   viewwin = window.open(imgsrc,'viewwin', "width=790,height=444,location=0");  
  viewwin.focus();  
}
于 2013-01-04T17:54:29.250 に答える