js循環(huán)改變div顏色具體方法
在使用javascript過程中,想循環(huán)遍歷一個(gè)數(shù)組,經(jīng)常使用的語法有兩種:
for (var i; i < array.length; i++) {
statement;
}
for (var i in array) {
statement;
}
這兩種用法看起來能做同樣的事情,但實(shí)際上兩個(gè)循環(huán)的循環(huán)次數(shù)一般是不一樣的。
源碼如下:
<!DOCTYPE html>
<html>
<head>
<style>
#button{text-align:center;}
#outer{width:330px; height:100px; margin:10px auto;}
#outer div{float:left;width:100px;height:100px;margin:0px 5px;background:black;}
</style>
<script>
window.onload = function() {
var obutton = document.getElementsByTagName("button")[0];
var outer = document.getElementById("outer");
var outerDiv = outer.getElementsByTagName("div");
obutton.onclick = function() {
for(var p in outerDiv) outerDiv[p].style.background = "red";
};
};
</script>
</head>
<body>
<div id="button">
<button>點(diǎn)擊變紅色</button>
</div>
<div id="outer">
<div></div>
<div></div>
<div></div>
</div>
</body>
</html>
這段代碼用了 for - in 語句做循環(huán),看上去沒有問題。
可是在瀏覽器調(diào)試的時(shí)候,會(huì)報(bào)錯(cuò):
"Uncaught TypeError: Cannot set property 'background' of undefined"
為什么會(huì)這樣呢?
如果我們把 stament 的內(nèi)容改一下,就會(huì)發(fā)現(xiàn)問題了:
for(var p in outerDiv) alert(p);
結(jié)果輸出是:0 1 2 length item
所以,當(dāng) property 取到 length 和 item 時(shí),再試圖用調(diào)用 style 方法,當(dāng)然就 undefined 了。 修改如下:
<!DOCTYPE html>
<html>
<head>
<style>
#button{text-align:center;}
#outer{width:330px; height:100px; margin:10px auto;}
#outer div{float:left;width:100px;height:100px;margin:0px 5px;background:black;}
</style>
<script>
window.onload = function() {
var obutton = document.getElementsByTagName("button")[0];
var outer = document.getElementById("outer");
var outerDiv = outer.getElementsByTagName("div");
obutton.onclick = function() {
for (var i = 0; i < outerDiv.length; i++){
outerDiv[i].style.background = "red";
}
};
};
</script>
</head>
<body>
<div id="button">
<button>點(diǎn)擊變紅色</button>
</div>
<div id="outer">
<div></div>
<div></div>
<div></div>
</div>
</body>
</html>
相關(guān)文章
layui數(shù)據(jù)表格重載實(shí)現(xiàn)往后臺(tái)傳參
今天小編就為大家分享一篇layui數(shù)據(jù)表格重載實(shí)現(xiàn)往后臺(tái)傳參,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11layui.js實(shí)現(xiàn)的表單驗(yàn)證功能示例
這篇文章主要介紹了layui.js實(shí)現(xiàn)的表單驗(yàn)證功能,結(jié)合實(shí)例形式分析了基于layui.js的事件監(jiān)聽、驗(yàn)證、判定等相關(guān)操作技巧,需要的朋友可以參考下2017-11-11uniapp退出關(guān)閉當(dāng)前小程序或APP的簡(jiǎn)單實(shí)現(xiàn)
最近通過Uniapp開發(fā)APP又一個(gè)非常實(shí)用的功能,這篇文章主要給大家介紹了關(guān)于uniapp退出關(guān)閉當(dāng)前小程序或APP的簡(jiǎn)單實(shí)現(xiàn),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12javascript+HTML5 Canvas繪制轉(zhuǎn)盤抽獎(jiǎng)
這篇文章主要為大家詳細(xì)介紹了javascrip+HTML5 Canvas繪制轉(zhuǎn)盤抽獎(jiǎng)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04用Js實(shí)現(xiàn)的動(dòng)態(tài)增加表格示例自己寫的
動(dòng)態(tài)增加表格的方法有很多,但大多說實(shí)現(xiàn)起來比較繁瑣,本文的這個(gè)示例是作者自己手寫的,經(jīng)測(cè)試效果還不錯(cuò),但唯獨(dú)不兼容FF,感興趣的朋友可以參考下2013-10-10