javascript針對DOM的應用分析(四)

來源:互聯網
上載者:User

下面我就寫幾個給大家看看
一,點擊傳參方法 複製代碼 代碼如下:<script>
function tab(dom){
var list = document.getElementById("list").getElementsByTagName("li");
var con = document.getElementById("con").getElementsByTagName("div");
for(var i=0;i<list.length;i++){
if(list==dom){
list.className = "on";
con.style.display = "block";
}
else{
list.className="";
con.style.display="none";
}
}
}
</script>
<div id="list">
<ul>
<li class="on">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>
<div id="con">
<div style="display:block;">111111</div>
<div style="display:none;">222222</div>
<div style="display:none;">333333</div>
<div style="display:none;">444444</div>
</div>

我解釋一下
var list = document.getElementById("list").getElementsByTagName("li");
var con = document.getElementById("con").getElementsByTagName("div");
擷取dom元素,這個不用說了吧。寫什麼效果第一件事都是擷取元素 複製代碼 代碼如下:for(var i=0;i<list.length;i++){
if(list==dom){
list.className = "on";
con.style.display = "block";
}
else{
list.className="";
con.style.display="none";
}

遍曆一下所有的li元素,找到和傳進來的dom一樣的東西,然後把他的class設定為on,並且把相對應的div給顯示出來,其他的就全部把className設定為空白,並且把對應的div給隱藏。
大概就是這樣。但是大家肯定就都發現了這樣的寫法的缺點,就是每個li都要設定一個onclick時間傳入它自己。這樣有點違反了結構與表現相分離的道理。所以我們就換種寫法
二,直接寫入滑鼠事件方法 複製代碼 代碼如下:<script>
function tab(){
var list = document.getElementById("list").getElementsByTagName("li");
var con = document.getElementById("con").getElementsByTagName("div");
for(var i = 0;i<list.length;i++)
{
list.onclick=function(){
for(var i=0;i<list.length;i++){
if(list==this){
list.className = "on";
con.style.display = "block";
}
else{
list.className="";
con.style.display="none";
}
}
}
}
}
window.onload=function(){tab();}
</script>
<div id="list">
<ul>
<li class="on">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</div>
<div id="con">
<div style="display:block;">111111</div>
<div style="display:none;">222222</div>
<div style="display:none;">333333</div>
<div style="display:none;">444444</div>
</div>

只是簡單的改動一下就可以了,因為在JS中有這些方法可以用比如onclick,onmouseover等等,但是用的時候我要先把所有的要用這個事件的元素都遍曆一下,如果那個被點擊就會傳入一個this,我們只需要像第一種方法一樣判斷一下list是不是和這個this相同,然後下面的操作和第一種方法一樣
(這樣兩種方法都是比較簡單的寫法,在JS裡還有一些比較進階複雜的寫法,但是用到的思想和這兩種寫法大多一樣。)
好了就到這裡,建議大家可以用這種方法寫一個圖片轉場效果,我想應該很簡單吧

下章繼續說效果

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.