2017-04-17 19 views
-2

我有一個非常簡單的問題。我想製作一個腳本,當我單擊圖像時顯示警報。如何在單擊元素時發出提醒

我的HTML是:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <link rel="stylesheet" href="style.css" \> 
    <script src="jquery-3.2.1.min.js" type="text/javascript"></script> 
    <script src="lightbox.js" type="text/javascript" \> 
    </script> 
    </head> 
    <body> 
    <img class="img" src="http://lorempixel.com/400/200/"></img> 
    </body> 
</html> 

和JS:

$("img").click(function() { 
    alert("dadadad"); 
}); 

我是新來的JavaScript,因此所有的提示,將有助於

+3

擺脫第二'升在'alert'中。 –

+0

一般提示:打開你的瀏覽器控制檯(通常是F12),這就是你可以在你的javascript代碼中看到錯誤的地方... – arkascha

+0

這個問題是由一個**不能再現的問題引起的**或** a簡單的印刷錯誤**。雖然類似的問題可能在這裏討論,但這個問題的解決方式不太可能有助於未來的讀者。這通常可以通過在發佈之前識別並密切檢查[重現問題所需的最短程序](http://stackoverflow.com/help/mcve)來避免。 –

回答

1

確保您編寫任何代碼的jQuery定義在「文檔就緒」塊中,如下所示,它發生在之後您的jQuery參考:

<img class="img" src="http://lorempixel.com/400/200/"></img> 
<script> 
    // This will ensure that jQuery has been loaded before it is used 
    $(function(){ 
     $("img").click(function() { 
       alert("dadadad"); 
     }); 
    }); 
</script> 

一個純JavaScript方法

值得一提的是,你爲這個不需要的jQuery爲addEventListener()功能就足夠了:

<script> 
    // Select all of your images 
    var images = document.querySelectorAll('img'); 
    for (var i = 0; i < images.length; i++) { 
     // Wire up a click event listener for each of them 
     images[i].addEventListener('click', function(){ 
     alert('foo'); 
     }); 
    } 
</script> 
+0

它的工作!謝謝。但你能告訴我爲什麼這個代碼不能在函數之外工作嗎? – AbUndZu

+1

正如我在答案中提到的那樣,使用'$(function(){...})'將確保jQuery在使用之前被加載。如果沒有這個塊,遇到'$'符號時,它不會知道它是什麼,因此不會創建事件偵聽器,因此您的代碼將無法工作。如果你不想涉及jQuery,我添加了一個純粹的JS實現示例。 –

相關問題