2014-01-12 106 views
-1

我有一個功能,添加或刪除文字執行JavaScript函數ID

function additionalText() 

當我使用:

<a id="toggleButton" class="moreText" onClick"additionalText()" >See More</a> 

功能正確執行。

但是,我想在我的.js文件中包含所有JavaScript,並使用ID id =「toggleButton」來觸發該函數。當我使用:

onclick = function() { 
additionalText(); 
} 

我可以點擊頁面的任何一點,並顯示額外的文字。我只是希望它在點擊「See More」時執行。我不想使用jQuery,但我知道這是一個事件監聽器和getElementById,但我很難過 - 有人可以幫忙嗎?謝謝。

+0

考慮使用jQuery,而不是如果您操作'DOM'。它使它更容易。例如:$('#toggleButton')。on('click',function(){'會做任何你想做的魔法,幾乎沒有額外的加載時間'22kb' –

+0

你最終需要接受一個答案,你知道 – Cilan

回答

3

您可以輕鬆地

document.getElementById('moreText').onclick = function() { 
additionalText(); 
} 

如果你想onclick通過HTML,你應該把一個等號做到這一點,雖然:

onClick="additionalText()" 
     ^Magic! 

簡單onclick會假設您將事件添加到window。另外,如果您使用選項#2,請確保您的additionalText()功能未定義後窗口加載,否則您的HTML將無法看到它。

1

有了這個:

document.getElementById('toggleButton').addEventListener('click', function() { 
    additionalText(); 
}); 

如果你要支持舊的瀏覽器也是如此,這樣做:

document.getElementById('toggleButton').onclick = function() { 
    additionalText(); 
}; 

乾杯

+0

這是一個好奇的角度Edgar爲什麼你不使用支持舊瀏覽器的較短代碼,而是使用更多字符的冗長頂部方法? –

+1

@NicholasHazel因爲支持舊瀏覽器的那個有一個反 - 模式,它只允許有1個監聽器(並且可能會覆蓋前一個監聽器)第一種方式使用觀察者模式,因此可以連接多於一個監聽器,這就是爲什麼如果可用則優先使用 –

1

添加的功能,一般的onclick事件。 這將通過每次點擊執行該功能。

試試這個

document.getElementById("toggleButton").onclick = additionalText(); 
1

或者在JQuery的,因爲它確保您試圖將事件附加到它之前,你的元素加載我會用這個stategy。

$(function() { 
    $('#toggleButton').on('click', function() { 
     additionalText(); 
    }); 
}); 
+0

哇,我們發佈了相同的時間。榮譽先生:-) –

+0

好笑!英雄所見略同 :) – mbokil