2013-11-21 196 views
1

我嘗試將參數傳遞給函數。當我點擊的div就會提醒paramater我通過Javascript將參數傳遞給函數

我有2個文件

  • 的index.html
  • 的script.js

這裏是我嘗試

實施例1

的index.html

<div id="thediv" > 

的script.js

window.onload = initialize; 

    //bind event listener 
     function initialize(){ 
      document.getElementById("thediv").onclick = myFunction(" something "); 
     } 
    //end of bind 

    //function 
     function myFunction(parameter) { alert(parameter) }; 
    //end of all function 
  • 麻煩的是功能而無需其執行單擊

實施例2

的index.html

<div id="thediv" onclick="myfunction('something')" > 

的script.js

function myFunction(parameter) { alert(parameter) }; 
  • 邑與此完成,但麻煩,如果我有很多元素的index.html它會痛讀取哪個元素有哪個聽衆
  • 我想將我的代碼分成3個部分(similiar與例1)
    • 視圖(HTML元素)
    • 元素有哪些聽衆
    • 功能

我應該怎麼辦?或者我可以這樣做? (我不希望使用另一個庫)

+0

您是否包含.js文件?如果你在script.js中添加了一個警報,它會彈出嗎? –

+0

是的。我正確地添加它 – ilike

回答

2

你的第一個解決方案的邏輯是絕對OK ..只是需要分配委託 ...你正在調用函數..所以做這樣的事情...

//bind event listener 
     function initialize(){ 
      document.getElementById("thediv").onclick = function() { myFunction(" something "); };  
     } 
//end of bind 
3

配售()(在任何數量的參數)將調用功能。然後返回值(在這種情況下爲undefined)將被分配爲事件處理程序。

如果你想分配一個函數,那麼你需要傳遞函數本身。

...onclick = myFunction; 

如果你想在它被調用時給它一個參數,那麼最簡單的方法是創建一個新函數並賦值。

...onclick = function() { 
     myFunction("arguments"); 
    }; 
+0

感謝它很好的解釋。所以如果我想傳遞參數,並且想要將腳本和元素分開以使其更具可讀性,那麼我能做的最好的事情就是在我的js文件中創建第二個代碼? – ilike

2

而是分配的調用與myFunction(); 功能使用方法如下