最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript實現(xiàn)99乘法表及隔行變色實例代碼

 更新時間:2016年02月24日 10:52:37   作者:凌云之翼  
最近做了個項目是要求實現(xiàn)99乘法表隔行變色,本文給大家分享通過多種方式實現(xiàn)js 99 乘法表,感興趣的朋友一起看看吧

項目需求:實現(xiàn)在頁面中輸出99乘法表。(要求:以每三行為一組,實現(xiàn)隔行變色(顏色為白,紅,黃(也可自己定義)),鼠標滑過每一行,行背景顏色變?yōu)樗{色,鼠標離開又恢復原來的顏色),隔行變色的效果需要用if和switch兩種判斷方式都能實現(xiàn);

額,分析一下實例要求:一個99乘法表,一個多方法的隔行變色,鼠標滑過變另外一個顏色,離開恢復原色。 嗯,我們一步步來吧!

99乘法表的實現(xiàn),我相信很多人都知道怎么實現(xiàn),無非是2個for循環(huán)得到的結(jié)果,這里我就不多做解釋,還不理解的同學可以仔細研究一下代碼,研究一下實現(xiàn)的原理,我在核心代碼那里寫一點小注釋,方便你理解:

/*乘法表的表達式是 i*j 如: * *
所以第一個數(shù)從-,分別乘以-,就得到了乘法表
*/
//這里定義是為了記錄id的
var cur = ;
//這里是第一位數(shù)
for(var i=;i<=;i++){
//這里是第二位數(shù)
for(var j=;j<=i;j++){
var sum = i*j;
//這里創(chuàng)建div
var Div = document.createElement("div");
Div.id = cur ;
Div.style.top = i* + 'px';
Div.style.left = j* + 'px';
cur++;
//這里賦值
Div.innerHTML = j+"*"+i+"="+sum;
document.body.appendChild(Div);
} 
}

css樣式我就不寫了,分到的效果就是這樣的:

小學99乘法表,大家都很熟悉,那我們實現(xiàn)第二個功能,隔行變色,要求是用if和switch實現(xiàn),那我們先用for來實現(xiàn)(這里用的3種顏色是:綠,灰,橙):

var cur = 1;
var bg = null;
for(var i=0;i<=9;i++){
for(var j=0;j<=i;j++){
var sum = i*j;
var Div = document.createElement("div");
var num = "div" + cur;
Div.id = num ;
Div.style.top = i*35 + 'px';
Div.style.left = j*105 + 'px';
cur++;
Div.innerHTML = j+"*"+i+"="+sum;
document.body.appendChild(Div);
var oDiv = document.getElementById(num);
if(cur%3 == 0){
bg="green";
}else if(cur%3 == 1){
bg="grey";
}else if(cur%3 == 2){
bg="orange"; 
oDiv.style.backgroundColor= bg;
}
} 

實現(xiàn)效果是這樣的:


用switch方法實現(xiàn):

var cur = 1;
var bg = null;
for(var i=0;i<=9;i++){
for(var j=0;j<=i;j++){
var sum = i*j;
var Div = document.createElement("div");
var num = "div" + cur;
Div.id = num ;
Div.style.top = i*35 + 'px';
Div.style.left = j*105 + 'px';
cur++;
Div.innerHTML = j+"*"+i+"="+sum;
document.body.appendChild(Div);
var oDiv = document.getElementById(num);
switch(cur%3){
case 0 :
bg="green";
break;
case 1 :
bg="grey";
break;
case 2 :
bg="orange";
break; 
}
oDiv.style.backgroundColor= bg;
}
} 

實現(xiàn)效果是這樣的:

效果好像無差,哈哈,說來實現(xiàn)方法也是挺簡單的,現(xiàn)在看看移入表色是怎么做的,以switch判斷為例:

var cur = ;
var bg = null;
for(var i=;i<=;i++){
for(var j=;j<=i;j++){
var sum = i*j;
var Div = document.createElement("div");
var num = "div" + cur;
Div.id = num ;
Div.style.top = i* + 'px';
Div.style.left = j* + 'px';
cur++;
Div.innerHTML = j+"*"+i+"="+sum;
document.body.appendChild(Div);
var oDiv = document.getElementById(num); 
switch(cur%){
case :
bg="green";
break;
case :
bg="grey";
break;
case :
bg="orange";
break; 
}
oDiv.style.backgroundColor= bg;
}
}
var oDiv = document.getElementsByTagName("div");
var len = oDiv.length;
for(var i=;i<len;i++){
//鼠標移入
oDiv[i].onmouseover = function(){
//第一種寫法,可以獲取行內(nèi)樣式(用style包起來的),也可以獲取樣式表中的樣式,且值為計算過的
//var defaultBg = getStyle(this,'background-color');
//第二種寫法,只能獲取style包起來的行內(nèi)樣式,值沒有經(jīng)過計算
var defaultBg = this.style.backgroundColor; //這里是為了存元素剛移入時的背景顏色
this.style.backgroundColor = 'red';
this.onmouseout = function(){
this.style.backgroundColor = defaultBg;
}
} 
}
//這里是獲取元素的樣式值,兼容性寫法
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return getComputedStyle(obj,false)[attr]; 
} 
}

得到的效果我就不截圖了,自行腦補,或者自己也寫一下,到此,所以的要求都寫完了!你以為真的到這里就完了嗎?按照我一貫的風格,當然沒有完,后面還有料!往下看:

你不覺得這個隔行變色有點奇怪嗎,確實是隔行變了色,如果是100*100的div,效果杠杠的,但是像99乘法表這樣的結(jié)果,我只能說呵呵,那能不能讓99乘法表實現(xiàn)像100*100的div那樣的隔行變色呢?咱們說工匠精神,就是要在乎這些細枝末節(jié),寫寫看唄!

原理:100*100的div,如果我給每一個編一個號,用橫軸和縱軸表示,像這樣:

那我們就知道,什么數(shù)值對應什么顏色了,轉(zhuǎn)化成99乘法表就是這樣:

那,思路就來了,如果我給每個div加一個標記,表示他是第幾行的第幾列,我就知道他是什么顏色,那代碼就如下:

var cur = ;
var bg = null;
for(var i=;i<=;i++){
for(var j=;j<=i;j++){
var sum = i*j;
var Div = document.createElement("div");
var num = "div" + cur;
Div.id = num ;
Div.style.top = i* + 'px';
Div.style.left = j* + 'px';
Div.setAttribute('abc',i+''+j);//核心代碼就是這里啦,給每一個div 自定義一個屬性abc,將坐標賦值給它
cur++;
Div.innerHTML = j+"*"+i+"="+sum;
document.body.appendChild(Div);
}
}
var oDiv = document.getElementsByTagName("div");
for(var i=;i<oDiv.length;i++){
var val = oDiv[i].getAttribute('abc');//這里獲取自定義屬性的值
//用這個值來判斷什么位置應該是什么顏色
switch(val%){ 
case :
bg="green";
break;
case :
bg="grey";
break;
case :
bg="orange";
break; 
}
oDiv[i].style.backgroundColor= bg;
}

得到的效果就是這樣的:

效果是不是棒棒噠,比上面的感覺還是舒服許多,所以,記住自定義屬性的強大功能,它能做很多棒棒噠事情,有時間,專門講講自定義屬性的牛X應用,哈哈!

工匠精神,我們再擴展一下,把上面的代碼稍微整理一下,做一個簡單的小封裝,就變成了一個求階乘的隔行變色的小應用,感覺瞬間變得:就這樣 feel 倍爽!

function multiTable(m){
var cur = ;
var bg = null;
for(var i=;i<=m;i++){
for(var j=;j<=i;j++){
var sum = i*j;
var Div = document.createElement("div");
var num = "div" + cur;
Div.id = num ;
Div.style.top = i* + 'px';
Div.style.left = j* + 'px';
Div.setAttribute('abc',i+''+j);//核心代碼就是這里啦,給每一個div 自定義一個屬性abc,將坐標賦值給它
cur++;
Div.innerHTML = j+"*"+i+"="+sum;
document.body.appendChild(Div);
}
}
var oDiv = document.getElementsByTagName("div");
for(var i=;i<oDiv.length;i++){
var val = oDiv[i].getAttribute('abc');//這里獲取自定義屬性的值
//用這個值來判斷什么位置應該是什么顏色
switch(val%){ 
case :
bg="green";
break;
case :
bg="grey";
break;
case :
bg="orange";
break; 
}
oDiv[i].style.backgroundColor= bg;
}
}
multiTable();

關于小編給大家介紹的JavaScript實現(xiàn)99乘法表及隔行變色實例代碼就給大家介紹這么多,希望對大家有所幫助!

相關文章

  • JavaScript性能陷阱小結(jié)(附實例說明)

    JavaScript性能陷阱小結(jié)(附實例說明)

    JavaScript陷阱太多,因此我們得步步為營,下面這些點,相信很多同學都會遇到,希望朋友們多注意下。JavaScript陷阱太多,因此我們得步步為營,下面是一些常見的影響性能的陷阱。
    2010-12-12
  • 基于JavaScript如何制作遮罩層對話框

    基于JavaScript如何制作遮罩層對話框

    遮罩層聽起來貌似很復雜,其實說白了就是一個全界面的半透明的div,用戶不可以點擊下邊的元素,或者說是點擊沒有反應,接下來通過本文給大家介紹JavaScript如何制作遮罩層對話框,對js遮罩層相關知識感興趣的朋友一起學習吧
    2016-01-01
  • javascript中的prototype屬性實例分析說明

    javascript中的prototype屬性實例分析說明

    一說到prototype很多人可能第一個想到的是著名的prototype.js框架,當然我們今天說的不是它,而是Javascript中的prototype屬性,一般都被翻譯為“原型”。這是一個比較特殊的屬性,Javascript中的繼承一般都依賴這屬性實現(xiàn)。
    2010-08-08
  • 干貨分享:讓你分分鐘學會javascript閉包

    干貨分享:讓你分分鐘學會javascript閉包

    干貨分享:讓你分分鐘學會javascript閉包,如何才能快速學會javascript閉包,本文為大家揭曉
    2015-12-12
  • Bootstrap柵格系統(tǒng)的使用和理解2

    Bootstrap柵格系統(tǒng)的使用和理解2

    這篇文章主要為大家詳細介紹了關于Bootstrap柵格系統(tǒng)的使用和理解的學習記錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • JS異步文件分片斷點上傳的實現(xiàn)思路

    JS異步文件分片斷點上傳的實現(xiàn)思路

    在項目中有時會遇到大文件上傳,經(jīng)常會出現(xiàn)鏈接超時的問題,所以就需要使用文件分片上傳的方式來上傳大文件。下面通過本文給大家介紹js異步文件分片斷點上傳的實例代碼,需要的的朋友參考下吧
    2016-12-12
  • js禁止Backspace鍵使瀏覽器后退的實現(xiàn)方法

    js禁止Backspace鍵使瀏覽器后退的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨s禁止Backspace鍵使瀏覽器后退的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Bootstrap 過渡效果Transition 模態(tài)框(Modal)

    Bootstrap 過渡效果Transition 模態(tài)框(Modal)

    這篇文章主要介紹了Bootstrap 過渡效果Transition 模態(tài)框(Modal),非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-03-03
  • JS實現(xiàn)新浪博客左側(cè)的Blog管理菜單效果代碼

    JS實現(xiàn)新浪博客左側(cè)的Blog管理菜單效果代碼

    這篇文章主要介紹了JS實現(xiàn)新浪博客左側(cè)的Blog管理菜單效果代碼,可實現(xiàn)基于鼠標點擊事件動態(tài)操作頁面元素樣式的功能,界面美觀大方,簡潔實用,需要的朋友可以參考下
    2015-10-10
  • JavaScript和JQuery獲取DIV值的方法示例

    JavaScript和JQuery獲取DIV值的方法示例

    這篇文章主要介紹了JavaScript和JQuery獲取DIV值的方法,結(jié)合具體實例形式對比分析了javascript與jQuery獲取頁面div元素值的實現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03

最新評論

东港市| 新化县| 屯昌县| 哈尔滨市| 高密市| 齐河县| 新乡县| 台南市| 深圳市| 嵩明县| 大化| 黄龙县| 阿克陶县| 山西省| 阿克苏市| 万全县| 铁岭县| 商丘市| 临邑县| 泾川县| 沙河市| 松原市| 苍南县| 改则县| 中山市| 电白县| 乌审旗| 桐城市| 武胜县| 南溪县| 常州市| 英吉沙县| 武乡县| 仁怀市| 宜丰县| 钦州市| 古丈县| 陈巴尔虎旗| 石景山区| 景泰县| 赣榆县|