2017-03-16 79 views
1

如何使用javascript更改onclick?如何使用javascript更改onclick?

https://jsfiddle.net/749rt0m7/1/

我試圖用這個代碼,但不能正常工作。我能怎麼做 ?

<span onclick="test_fn('aaa,bbb')" id="xx">edit</span> 
    <script> 
     document.getElementById('xx').onclick = "test_fn(111,222)"; 
    </script> 
+1

請注意,您的內聯屬性傳遞一個單個參數,該參數是一個帶有逗號的字符串,但您試圖更改的版本傳遞兩個數字參數。 – nnnnnn

回答

2

這裏有一些事情正在進行。

首先test_fn()不是你的jsfiddle中的函數。您需要定義它才能被調用。

其次,您將onclick屬性設置爲字符串而不是函數。你將不得不使用下面的代碼將它設置爲一個函數。

document.getElementById('xx').onclick = function() { test_fn(111,222) }; 

這裏是一個working jsfiddle.

UPDATE

的例子它看起來像我誤解了這個問題。如果實際上想要更改onclick屬性,如更改HTML顯示的內容,則需要使用setAttribute()。所以,你的代碼將是..

document.getElementById('xx').setAttribute("onClick", "test_fn('111,222')"); 

這裏是updated jsfiddle

作爲一個側面說明,像nnnnnn說,在原崗位的評論,使用這個你是路過1個參數,通過它的功能是字符串​​似乎你可能想傳遞兩個。如果你想通過111作爲第一個參數和222作爲第二個參數,你會調用與函數或者test_fn(111,222)(傳遞參數爲整數)或test_fn('111','222')(傳遞參數字符串)

+0

當我想從'onclick =「test_fn( 'aaa,bbb')「'to'onclick =」test_fn('111,222')「' –

+0

我已經更新了我的答案。 – Alesana

+1

關於更新,我不確定你是否誤解了這個問題,因爲OP不明白他們要求什麼。將屬性更改爲新字符串而不是直接分配函數有什麼好處嗎?我認爲「正確的」結果可以通過實際調用哪個函數以及單擊元素時的參數來衡量,而不是HTML看起來像什麼,特別是當「查看源代碼」仍然會顯示原始來源時碼。 – nnnnnn

0

您需要設置onclick的功能,運行代碼test_fn('111,222')

<script> 
    document.getElementById('xx').onclick = function() { test_fn('111,222'); } 
</script> 
+0

沒有時,我想從'onclick =「test_fn('aaa,bbb')」'改變爲'onclick =「test_fn('111,222')」' –

+1

是的,這就是它的作用。 javascript中的'onclick'需要是一個函數 – hackerrdave

+0

@mongkonmamiw我有一個偷偷摸摸的懷疑,你正試圖右鍵單擊> viewsource來查看更改。那麼這不是瀏覽器的工作方式。 viewsource只顯示從服務器返回的初始/原始內容。您可以通過查看實時DOM(使用您的瀏覽器的開發控制檯查看它)來查看更新後的onclick屬性。 –

0
document.getElementById('xx').onclick = function() { 
    test_fn(111, 222); 
}; 

當HTML設置onclick,使用字符串。通過JS進行設置時,使用一個函數。

+0

當我想從'onclick =「test_fn('aaa,bbb')」'改變爲'onclick =「test_fn('111,222')」' –

+1

這就是上面的代碼所做的。嘗試一下。 –

+0

可以請你給我看一些小提琴嗎? –

0

我不看不到你在哪裏定義功能test_fn 你在HTML和JS中掛鉤函數的元素onclick兩次..只需要一個,而實際上你需要定義函數

<span id="xx">edit</span> 
<!-- or .. not both , they are doing pretty much the same thing--> 
<script> 
    document.getElementById('xx').onclick = function(){ 
    console.log('clicked') 
    } 
</script> 

現在你需要定義test_fn它會得到呼籲單擊元素

function test_fn(arg1 , arg2){ 
    condole.log(arg1 , arg2) 
} 

注意,HTML onclick版本傳遞一個參數和JS腳本版本傳遞兩個argumens。

+0

當我測試你的代碼https://jsfiddle.net/j2mbngq1/'id =「xx」'仍然'onclick =「test_fn('aaa,bbb')」'不改爲'onclick =「test_fn('111,222' )「' –

+0

編輯,這裏是另一個版本。 http://jsbin.com/vutotar/edit?html,js,console,output – aeid

相關問題