2014-09-01 47 views
-1

我從innerHTML屬性調用帶有一個參數的函數,但什麼也沒有顯示這href屬性參數的函數是我的代碼:調用帶有

var myVar="Ali"; 
     summaryPanel.innerHTML += "<a href='javascript:sayHello("+ myVar+");'>" + "Say Hello" + "</a>"; 


function sayHello(myVar) 
{ 
     window.alert(myVar); 
} 
+0

你需要有該功能的觸發器。現在你所做的只是創建一個HREF,沒有實際的觸發器,也沒有結束標記。 – durbnpoisn 2014-09-01 17:06:53

+1

假設鏈接可以被點擊並被點擊:看看控制檯。你會看到一個錯誤。提示:字符串文字,引號。 – 2014-09-01 17:09:28

回答

3

試試這個:

var a = document.createElement('a'); 
a.appendChild(document.createTextNode('Click me')); 
a.addEventListener('click', function() { 
    sayHello(myVar); 
}, false); 
summaryPanel.appendChild(a); 

一些注意事項:

  • 避免內聯事件處理程序,它需要全局函數
  • 避免污染全球範圍
  • 避免使用不受信任的變量從字符串構建html元素(可能是myVar的情況)。這種做法很容易被html注入。
  • 避免htmlElement.innerHTML += something。這將刪除添加到先前的元素的所有數據和事件處理程序內htmlElement
+0

或者,如果上述註釋對您無關緊要,請使用「Click me」'。 [演示](http://jsfiddle.net/rgy0kxa8/) – Oriol 2014-09-01 17:26:41

+0

非常感謝Oriol爲它提供的幫助很多 – 2014-09-01 18:09:28

-1

試試這個

var myVar = "Ali"; 

summaryPanel.innerHTML += "<a href='javascript:void(0)' onclick='sayHello("+myVar+")' />"; 

function sayHello(param){ 
     windows.alert(param); 
} 
+1

您的解決方案與OP的代碼具有相同的問題。 – 2014-09-01 17:29:45