1

我想将我所有的 JavaScript 保存在一个单独的文档中,我喜欢这样。现在我遇到了从我的 HTML 代码移动到我单独的 JavaScript 文档的最后一点代码的问题。

我有两个看起来像这样的事件处理程序:

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

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

这是两个事件处理程序的 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 更改为以下内容,我设法解决了我的 HTML 文档中没有第一个 onClick 事件处理程序的 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 回答