0

我想调用一个打开新链接的函数。我想在点击所有图片后执行此操作。我怎样才能做到这一点?

HTML

<!DOCTYPE HTML> 
<html>
<head>
    <meta charset="windows-1252"> 
    <!--[if lt IE 9]>
        <script src="http://html5shim.googlecode.com/svn/trunk/html5.js">   </script>
        <![endif]--> 
    <title>Date med mig - version b
    </title>
    <script type="text/javascript">
    function newWindow()
    {
        window.location = window.location = "http://www.tv3.se/datemedmig"
    }
    </script>
</head>
    <body>
    <h1>Del 2: Date med mig</h1>    

    <img src="1_c.jpg" id="image1" onclick="this.src='1_o.jpg';" alt="image" />
    <img src="2_c.jpg" id="image1" onclick="this.src='2_o.jpg';" alt="image" />
    <img src="3_c.jpg" id="image1" onclick="this.src='3_o.jpg';" alt="image" />
    <img src="4_c.jpg" id="image1" onclick="this.src='4_o.jpg';" alt="image" />

    </body>
</html>
4

3 回答 3

2

如果您试图在单击任何图像后立即加载一个新窗口,我认为@runfaj 所说的方式可能是最好的,我的理解是您只想在所有图像都完成后才这样做点击?

如果是这种情况,这里有一个选项(这可能不是最有效的)

//Assuming there are 4 images
var hasBeenClicked = [false,false,false,false]

//To be called when each image is clicked
function imageClicked(whichImage){ 

    this.src = "'"+whichImage+"_o.jpg'"

    //set this position in the array equal to true
    hasBeenClicked[whichImage] = true

    // if the array is completely true (every image has been clicked)
    // call the newWindow function
    if(hasBeenClicked == [true,true,true,true]){
          newWindow();
    }

}

然后当您创建图像时:

<img src="1_c.jpg" id="image1" onclick="imageClicked(1);" alt="image" />
于 2013-02-12T22:24:40.023 回答
0

你可以通过三种方式做到这一点:

jQuery:

$('img').click(newWindow);

排队:

<img src=..... onclick="newWindow()" />

常规的 JavaScript:

获取所有标签:

var imgs = document.getElementByTagName('img');

然后为每个事件添加一个事件监听器(谷歌​​它有很多不同的例子)

于 2013-02-12T22:19:40.867 回答
0

有一个 onclick 功能,触发每个图像,在图像标签上设置一个新属性。然后对所有图像运行循环以检查它们是否都有标签。如果是这样,请打开新窗口。例如:

$('img').click(function() {
    $(this).data('was-clicked', true);

     var all_clicked = true;
     $('img').each(function() {
         if($(this).data('was-clicked') != true) {
             all_clicked = false;
             break;
         }
     });

     if(all_clicked == true) newWindow();
 });

请注意,此代码未经测试,可能存在语法/语义错误。此外,您可能并不真的希望用户单击所有图像标签(例如横幅、背景等),因此您应该修改 jquery 选择器以仅过滤您感兴趣的“img”标签,例如 $('#my -画廊img')...

于 2013-02-12T23:47:59.057 回答