2012-01-12 35 views
2

所以這個想法是這樣的。我在js文件中有一個數組以及一個引用該數組中的隨機元素的函數。我希望能夠點擊一個按鈕,並且跨度中的文本更改爲數組中的隨機元素。 我已經有這樣做的方法。我有一個id爲「change_equivalently」的跨度。然後,在JavaScript文件,我有如何直接在html中引用javascript函數?

var Equivalentlys = [ 
"Equivalently, ", 
"Alternatively, ", 
"Another way of saying this is that " 
]; 

$('#shuffle').click(function() { 
    var length = (Equivalentlys.length + 1); 

    var x = Math.floor(Math.random()*length); 

function Equivalently(i){ 
    return Equivalentlys[i]; 
}; 

$('#change_equivalently').text(Equivalently(x)); 

}); 

我的問題是,當我寫出來的HTML代碼,我一直有寫

<span id = "change_equivalently"> ... </span> 

爲了能夠在改變的話了點擊按鈕。

但我想要一個更簡單的方法。 我想是這樣

<var> Equivalently(1) </var> 

,看看我是否可以參考的JavaScript功能,但沒有奏效。

我該怎麼去解決這個問題?

回答

3

首先,您目前使用的方法是更好比您想要的 - 它將演示與功能分開,並被廣泛認爲是最佳做法。

但是,您可以(但是,正如我所說,大概不應)包括代碼被點擊你的元素時被調用:

<span onclick="doStuff()"> blarg </span> 

如果你只是想能夠將JavaScript代碼轉換爲HTML(如PHP或類似的模板系統),您將無法使用JavaScript。

最終,最好的方法就是使用span來標記內容並在您的腳本中添加一個單擊事件,就像您現在所做的那樣。這在語義上是最好的:在html中,你所說的只是那個特定的詞/位置是可以改變的;你指定它在您的代碼中如何更改

+0

當然,'document.write'(http://javascript.about.com/library/blwrite.htm)將允許您將Javascript變成像PHP一樣的HTML嗎?儘管+1表示你不應該這樣做。 :) – Chris 2012-01-12 09:55:16

+1

[爲什麼document.write被認爲是'壞習慣'?](http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice) – 2012-01-12 09:58:53

+0

好的。那麼,我不知道任何PHP,所以我會堅持我最初做的。繼續使用它的ID來繼續跨越將會是一件痛苦的事情。但我想這不是那麼糟糕。 – 2012-01-12 10:25:46

1

你的意思是?

<script type="text/javascript"> 
    Equivalently(1) 
</script> 
+0

你不想在那裏有一個'document.write'嗎? – Chris 2012-01-12 09:55:31

+0

我在html中試過這個,但沒有奏效。 – 2012-01-12 10:24:33