動(dòng)態(tài)的9*9乘法表效果的實(shí)現(xiàn)代碼
近日在群里看到有個(gè)題目,拿出來(lái)寫寫,
要求:
用html,css,原生js實(shí)現(xiàn)如圖的效果,先正向輸出,然后逆向回溯,最后停留在完整的畫(huà)面。
首先:
HTML部分代碼:
<div id="result"></div>
就是這么簡(jiǎn)單一行搞定。
CSS代碼:
#result{ width:550px; margin:30px auto; font-size:0; font-family:Consolas,"Liberation Mono",Menlo,Courier,monospace; } #result span{ display:inline-block; width:60px; height:25px; line-height:25px; font-size:12px; text-align:center; border:1px solid #eee; margin: -1px 0 0 -1px; }
CSS代碼也很簡(jiǎn)單,span中的margin主要就是為了消除出現(xiàn)雙border的問(wèn)題。
接下來(lái)重點(diǎn)來(lái)了
javascript代碼:
首先創(chuàng)建一個(gè)9*9乘法表的函數(shù)
function create(){ var html = []; for(var i = 1;i <= 9;i++){ for(var j = 1;j <= i;j++){ html.push('<span>'+j+'*'+i+'='+(j*i)+'</span>'); } html.push('<br/>'); } return html; }
1,新建一個(gè)用來(lái)放html代碼片段的空數(shù)組:
var html = [];
2,使用for循環(huán)遍歷出9*9乘法表格:
for(var i = 1;i <= 9;i++){ for(var j = 1;j <= i;j++){ //內(nèi)容 } }
3,將循環(huán)內(nèi)容push進(jìn)之前新建的空數(shù)組:
html.push('<span>'+j+'*'+i+'='+(j*i)+'</span>');
4,注意為了實(shí)現(xiàn)階梯在j循環(huán)完畢之后添加一個(gè)換行字符:
html.push('<br/>');
5,最后記得return出剛剛那個(gè)數(shù)組:
return html;
創(chuàng)建9*9乘法表的函數(shù)就完成了。
接下來(lái)是將展示到頁(yè)面中:
function inHTML(){ var html = create(), i = 0, tmp = create(), timer = null, result = document.getElementById('result'); timer = setInterval(function(){ if(i > html.length){ html.splice(html.length-1,1) result.innerHTML = html.join(''); } else{ result.innerHTML += html[i++]; } if(!html.length){ result.innerHTML = tmp.join(''); clearInterval(timer); } },100) }
我們依然是創(chuàng)建一個(gè)新的函數(shù):inHTML()
1,首先聲明一些初始化變量
var html = create(),//調(diào)用之前創(chuàng)建的9*9函數(shù) i = 0,//初始化變量i tmp = create(), timer = null,//初始化 result = document.getElementById('result');//獲取id
2,接著我們創(chuàng)建一個(gè)定時(shí)器,讓數(shù)據(jù)依次展示:
timer = setInterval(function(){ //內(nèi)容 },100)
讓100毫秒執(zhí)行一次這個(gè)定時(shí)器
3,接著寫定時(shí)器中的內(nèi)容:
if(i > html.length){ //判斷i是否大于html.length,如果大于就逆向展示 html.splice(html.length-1,1) result.innerHTML = html.join(''); } else{ //如果小于就正向展示 result.innerHTML += html[i++]; } if(!html.length){ //判斷如果html.length為false時(shí)展示。 result.innerHTML = tmp.join(''); clearInterval(timer);//清除定時(shí)器 }
inHTML()函數(shù)也寫完了,那就剩下調(diào)用了
inHTML();
完成。
大家可以去自己去試試,有更好的想法可以給我留言。
以上這篇?jiǎng)討B(tài)的9*9乘法表效果的實(shí)現(xiàn)代碼就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
js實(shí)現(xiàn)Tab選項(xiàng)卡切換效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)Tab選項(xiàng)卡切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10元素的內(nèi)聯(lián)事件處理函數(shù)的特殊作用域在各瀏覽器中存在差異
在一個(gè)元素的屬性中綁定事件,實(shí)際上就創(chuàng)建了一個(gè)內(nèi)聯(lián)事件處理函數(shù)(如<h1 onclick="alert(this);"...>...</h1>),內(nèi)聯(lián)事件處理函數(shù)有其特殊的作用域鏈,并且各瀏覽器的實(shí)現(xiàn)細(xì)節(jié)也有差異。2011-01-01使用js和canvas實(shí)現(xiàn)時(shí)鐘效果
這篇文章主要為大家詳細(xì)介紹了使用js和canvas實(shí)現(xiàn)時(shí)鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09微信小程序如何在頁(yè)面跳轉(zhuǎn)時(shí)進(jìn)行頁(yè)面導(dǎo)航
小程序能夠在不同的頁(yè)面進(jìn)行跳轉(zhuǎn)切換,路由起到了至關(guān)重要的作用,下面這篇文章主要給大家介紹了關(guān)于微信小程序如何在頁(yè)面跳轉(zhuǎn)時(shí)進(jìn)行頁(yè)面導(dǎo)航的相關(guān)資料,需要的朋友可以參考下2022-09-09JavaScript實(shí)現(xiàn)彈窗效果代碼分析
本文主要介紹了JavaScript實(shí)現(xiàn)彈窗效果的代碼分析,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03js實(shí)現(xiàn)獲取兩個(gè)日期之間所有日期的方法
這篇文章主要介紹了js實(shí)現(xiàn)獲取兩個(gè)日期之間所有日期的方法,涉及javascript針對(duì)日期與時(shí)間的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06實(shí)現(xiàn)checkbox全選、反選、取消JavaScript小腳本異常
實(shí)現(xiàn)checkbox全選,反選,取消JavaScript小腳本的時(shí)出現(xiàn)點(diǎn)小異常,大家可以看看,以后就不要犯這個(gè)特別2的錯(cuò)誤了2014-04-04常見(jiàn)的瀏覽器存儲(chǔ)方式(cookie、localStorage、sessionStorage)
今天我們從前端的角度了解一下瀏覽器存儲(chǔ),我們常見(jiàn)且常用的存儲(chǔ)方式主要由兩種:cookie、webStorage(localStorage和sessionStorage)。本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-05-05