2016-09-19 4 views
0

私は2時間ほどこの問題を抱えていました。私がしようとしているのは、ボタンを押して色を変えるウェブサイトです。私はこれがCSSでできることを知っていますが、私はそれに興味がありません。Javascriptを使用しているときにIDが私のクラスを引き継いでいます

主な問題は、私がボタンを押したときに何も起こらないということです。しかし、「#sug from the css」を削除すると、すべてが完璧に動作します...私がしたいのは、レイアウト非常に基本的なものなので、黒い背景のようなものはありません。ボタンを押すと切り替えるはずです。

さらに、onclickをボタンタグに実装できます私はどちらかに行きます。私はこれがなぜ起こり、どうやってこの問題を解決できるのか知りたい。

window.onload = setUp; 
 

 
function setUp() { 
 
    document.getElementById("normal").onclick = setNormalStyle; 
 
    document.getElementById("crazy").onclick = setCoolStyle; 
 
    document.getElementById("insane").onclick = setInsaneStyle; 
 
} 
 

 
function setNormalStyle() { 
 
    var messageBox = document.getElementById("sug"); 
 
    messageBox.className = "normal"; 
 
} 
 

 
function setCoolStyle() { 
 
    var savingTheSecondVar = document.getElementById("sug"); 
 
    savingTheSecondVar.className = "cool"; 
 
} 
 

 
function setInsaneStyle() { 
 
    var savingTheThirdVar = document.getElementById("sug"); 
 
    savingTheThirdVar.className = "insane"; 
 
}
#sug { 
 
    background-color: black; 
 
} 
 
.normal { 
 
    height: 500px; 
 
    background-color: blue; 
 
    color: white; 
 
    padding: 30px; 
 
    margin: auto; 
 
    width: 500px; 
 
} 
 
.insane { 
 
    height: 500px; 
 
    background-color: green; 
 
    padding: 30px; 
 
    margin: auto; 
 
    width: 500px; 
 
    color: white; 
 
} 
 
.cool { 
 
    height: 500px; 
 
    background-color: red; 
 
    padding: 30px; 
 
    margin: auto; 
 
    width: 500px; 
 
    color: white; 
 
}
<!DOCTYPE html> 
 

 
<html> 
 

 
<head> 
 
    <meta charset="utf-8" /> 
 
    <link type="text/css" rel="stylesheet" href="Struktur.css" /> 
 
    <script type="text/javascript" src="struktur.js"></script> 
 
    <title>My first Javascript project</title> 
 
</head> 
 

 
<body> 
 
    <div id="sug" class="cool insane normal"> 
 
    <header> 
 
     <h1> Welcome to this Javascript site! </h1> 
 
    </header> 
 
    <section> 
 
     <p> 
 
     text 
 
     </p> 
 
    </section> 
 
    <button type="button" id="normal">First style</button> 
 
    <button type="button" id="crazy">Second style</button> 
 
    <button type="button" id="insane">Third style</button> 
 
    </div> 
 
</body> 
 

 
</html>

+2

IDルールはクラスルールを無効にします。それがCSSの仕組みです。 –

+0

https://www.smashingmagazine.com/2007/07/css-specificity-things-you-should-know/ - トピックに関する素敵な記事 –

+2

今日、デファクトスタンダードは、CSSのIDをまったく使わないことです。 javascriptのみです。 – ippi

答えて

3

問題は、あなたのCSSです:あなたはこのようにそれを指定する必要があります。

#sug{ 
    background-color: black; 
} 

より具体的なセレクタ(つまり、idセレクタ)であるため、クラスの背景色を上書きします。

変更CSSであなたのクラスの残りの部分は、ここで

は、CSSの特異性に素晴らしい記事です

#のsug.normal、#のsug.insane、#sug.coolなどのようなIDを含むようにhttps://css-tricks.com/specifics-on-css-specificity/

0

idはクラスに優先しているためです。ここで

は私のjavascript、CSSとHTMLコードです。

#sug.cool { background: red; } 

など

0

ボタンのCSS onClick()イベントで#sug idが提供する背景色を削除していません。 IDはクラスよりも優先度が高い

クラスにはスペースがあり、複数のクラスを追加する場合に使用できるので、以下のコードを使用するのは良い習慣です。

messageBox.className += " " + "normal"; 
関連する問題