1. 程式人生 > >CSS選擇器修改樣式,及單獨修改樣式this.style.

CSS選擇器修改樣式,及單獨修改樣式this.style.

css選擇器:修改樣式
實現開關燈效果

<html>
 <head>
    <title>開關燈效果</title>
 <style type="text/css">
 body
 {
     background: #FFF;
 }
.day
{
    background: #000;
}
.night
{
    background: #FFF;
}
    </style>
    <script language="javascript" type="text/javascript">
function Switch() {
    var btnSwitch = document.getElementById("btnSwitch");
    var type = document.body.className;
    if (type == "day") {
document.body.className = "night";
btnSwitch.value = "關燈";
    } else {
document.body.className = "day";
btnSwitch.value = "開燈";
    }
}
    </script>
</head>
<body>
    <input id="btnSwitch" type="button" value="關燈" onclick="Switch()" />
</body>
</html>


 單獨修改樣式的屬性使用“style.屬性名”,css在javascript中操作的時候的屬性名可能不同有“-”
 Style.frontSize:front-size
 Style.margainTop:margain-top
 <input type="button" value="AAA" onclick="this.style.background='red'"/>


案例1:建立三個文字框,當游標離開文字框的時候,如果文字框為空,則將文字框背景色設定為紅色,如果不為空,則設定為白色
<head>  
    <title></title>  
    <script type="text/javascript">  
    function initEvent()  
    {  
        var inputs=document.getElementsByTagName("input");  
        //遍歷所以input控制元件,新增onblur響應函式  
        for(var i=0;i<inputs.length;i++)  
        {  
            var input=inputs[i];  
            input.onblur=inputOnblur;//注意:為input控制元件的onblur事件繫結inputOnblur響應函式,而不是呼叫某個函式  
        }  
          
        //失去焦點時候進行資料檢查  
        function inputOnblur()  
        {  
            //inputOnblur是onblur的響應函式,而不是被響應函式呼叫的函式,所以可以用this來取得發生事件控制元件的物件  
            if(this.value.length<=0)//檢查文字框中文字長度,如果<=0,則文字框為空  
            {  
                this.style.background="red";  
            }  
            else  
            {  
                this.style.background="white";  
            }  
        }  
    }  
      
      
    </script>  
</head>  
<body onload="initEvent()">  
    <input id="Text1" type="text" />  
    <input id="Text2" type="text" />  
    <input id="Text3" type="text" />  
    <input id="Text4" type="text" />  
    <input id="Text5" type="text" />  
</body>  
</html>  






案例2:評分控制元件:


<head>  
    <title>無標題頁</title>  
    <script type="text/javascript">  


function indexOf(arr,element)
{ for(var i=0;i<arr.length;i++)
{
if(arr[i]==element)
{
return i;
}

}
return -1;
}




function initEvent()
{var tableRating=document.getElementById("tableRating");
var tds=tableRating.getElementsByTagName("td");
for(var i=0;i<tds.length;i++)
{
var td=tds[i];
td.onclick=TdOnClick;
td.style.cursor="pointer";
}


}






function TdOnClick()
{
var tableRating=document.getElementById("tableRating");
var tds=tableRating.getElementsByTagName("td");
var index=indexOf(tds,this);


for(var i=0;i<=index;i++)
{
var td=tds[i];
td.style.background="red";
}
for(var i=index+1;i<tds.length;i++)
{
var td=tds[i];
td.style.background="white";
}


}
      </script>  
</head>  
<body onload="initEvent()">  
 <table id="tableRating" >
 <tr><td>☆</td><td>☆</td><td>☆</td><td>☆</td><td>☆</td></tr>
 </table>
 </body>  
</html> 
版本2:
是隻有一個indexof()函式,一個init()函式在頁面載入完成之後呼叫onload裡,其中init函式裡為每個td新增onmouseover事件
解惑:
為什麼有的需要傳this有的不需要?
<body>
<input type="button" value="click" onclick="alert(event.srcElement.value)"/>
<input type="button" value="click2" onclick="alert(this.value)"/>
<input type="button" value="click3" onclick="btnClick3()"/>
<input type="button" value="click4" onclick="btnClick4(this)"/>
<input type="button" value="click5" onclick="btnClick5()"/>
<input type="button" value="click6" id="btn6"/>


<script>
btnClick3(){alert(this.value);}//在事件響應函式呼叫的函式裡,不能通過this來獲得事件物件
btnClick4(btn){alert(btn.value);}//在事件響應函式中,將this傳過來就可
btnClick5(){alert(event.srcElement.value);}
btnClick6(){alert(this.value);}


var btn6=document.getElementById("btn6");
btn6.onclick=btnClick6;
</script>