2011-11-15 162 views
3

我發現這在另一個問題/答案,並修改它...但它仍然無法正常工作。我是js-noob,所以..有人可以幫我嗎?這可能很簡單...更改文字顏色onclick並更改爲其他項目

<script> 
    document.getElementById('change').onclick = changeColor; 
    function changeColor() { 
     document.body.style.color = "red"; 
     return false; 
    } 
</script> 

<div id="myid" onclick="changeColor(this); return false;">Hello Here !!</div><br> 
<div id="myid2" onclick="changeColor(this); return false;">Hello There !!</div><br> 

我的問題是:當我運行這個,都應該有黑色。當我點擊第一個時,只有一個人應該變成紅色。如果之後,我點擊第二個,第一個應該是黑色,只有第二個紅色... 我該怎麼做? (jquery也會受歡迎,如果有解決方案...)

謝謝!

+2

第一,你做對了「變」的id的getElementById,並沒有與元素,這是在你的HTML標識。然後,你用onClick調用onClick的changeColor函數作爲參數,但是changeColor函數不處理任何參數(blablacanworkblabla)最後,在你的內聯html中放置處理程序是一種不好的做法 – roselan

+0

另外, roselan說。 – Edwin

回答

3

謝謝埃德溫。我做了一些Google搜索,並找到了一些我發現的東西,它完全符合我想要做的。很抱歉的混亂。我挑的div,如果我能得到那個工作,那麼我會實現它爲我立的.. 無論如何,解決辦法是:

JavaScript部分:

function switchColors(element) 
{ 
links=document.getElementsByTagName("li") ; 
for (var i = 0 ; i < links.length ; i ++) 
links.item(i).style.color = 'black' ; 
element.style.color='orange' ; 
} 

而所需要的顏色更改HTML的東西:

<ul> 
<li onclick="switchColors(this);">Link 1</li> 
<li onclick="switchColors(this);">Link 2</li> 
<li onclick="switchColors(this);">Link 3</li> 
</ul> 
+0

Just run this ..這個代碼根本不起作用。此外,當您使用此代碼時,您完全忽略了我的回答中的建議以及@ roselan的評論。 – Edwin

+0

它適合我。 javascript不在頁眉中,而是在頁面底部的腳本中......至少,這就是我設置它的原理和工作原理。 就「忽略」去說吧..我把它當作「給出的代碼是一張[填入空白],你將不得不做大量的改變」。因爲我反正想用李的方式,所以我尋找另一種解決方案,編輯它,並在上面貼出來。 至於使用預定義的規則..你的意思是改變類通過js而不是改變「李」(在這種情況下)?據我所知,我不能做我想單獨做css ... – Malachi

+0

是的,因爲在使用jQuery的'$(obj).addClass(「紅色」)'後面跟着'$(obj).removeClass (「black」)',或者使用本地的'obj.class =「red」'在顏色之間切換,其中CSS是'.red {color:#f00; }'和'.black {color:#000; }'。或者,你可能也想看看'$(obj).toggleClass(「red」); $(OBJ).toggleClass( 「黑」);'。 – Edwin

4

這是您的solution

這不是最好的,但考慮到您複製代碼的錯誤,您可能想要查看Wikiversity's page on Beginning JavaScript以及它們的challenges

另外,代碼中的錯誤列表複製,這樣你就可以再次避免這些問題:

  1. 腳本的第一線獲取元素ID爲「變」。您的HTML中不存在這樣的ID。
  2. document.body不會返回一個有效的JavaScript對象,您可以使用它訪問.style.color
  3. changeColor()不接受任何參數,所以你不應該用changeColor(this)來調用它。
  4. 請勿使用內聯DOM。即,不要在HTML中使用onclick屬性。 HTML意味着佈局,而不是腳本。
  5. (在下面的評論中由@roselan添加)使用預定義的CSS樣式規則和切換元素的類來獲得所需的效果,而不是使用$ .css或JavaScript的native .style。 (這種做法的一個例子可以在解決方案中找到。)

而且最重要的是, 佈局應留在HTML,腳本在JavaScript和樣式在CSS。

+0

5.不是使用$ .css或native .style,而是使用相應的css規則切換類(所有樣式在css文件中,所有代碼在js文件中,所有html在html文件中) – roselan