javascript - js,有幾行代碼不太明白?
問題描述
<!Doctype html><html lang='en> <head><meta http-equiv='Content-Type' content='text/html; charset=utf-8' /><title>控制p屬性</title><script> var changeStyle = function(elem, attr, value) {elem.style[attr] = value }; window.onload = function() {var oBtn = document.getElementsByTagName('input');var op = document.getElementById('p1');var oAtt = ['width', 'height', 'background', 'display', 'display'];var oVal = ['200px', '200px', 'red', 'none', 'block'];for (var i = 0; i < oBtn.length; i++) { oBtn[i].index = i; oBtn[i].onclick = function() {this.index == oBtn.length - 1 && (op.style.cssText = '');changeStyle(op, oAtt[this.index], oVal[this.index]) }} };</script> </head> <body><p id='outer'> <input type='button' value='變寬' /> <input type='button' value='變高' /> <input type='button' value='變色' /> <input type='button' value='隱藏' /> <input type='button' value='重置' /> <p id='p1'></p></p> </body></html>
1.為什么要邏輯運算?2.this.index 與 op.style.cssText之間是怎么樣的關系,能簡單說一下嗎?
問題解答
回答1:那句的意思是:如果點擊的按鈕是“重置”,則把 p1 元素的 cssText 清空。也就是重置了 p1 元素的初始狀態(沒有 style 值)。
&& 運算是從左向右執行的,只有當左邊表達式為真時,才執行右邊的表達式。在這里既當 this.index == oBtn.length - 1,也就是點擊的是最后一個按鈕時,執行 op.style.cssText = ''。
這種寫法不值得提倡,閱讀性很差,不是一個好的寫法。正常的寫法是:
if(this.index === oBtn.length - 1) { op.style.cssText = ''}
this.index 就是保存了按鈕的序號,用于判斷點擊的是哪個按鈕。在這里不能直接用 i 來表示,這是 JavaScript 一個著名的缺陷。
回答2:this.index == oBtn.length - 1 && (op.style.cssText = '');
表示:如果是最后一個btn的話,就執行后面的代碼(op.style.cssText = ''),即清除樣式
a==b&&code...
相當于if(a==b){code....}
個人不太喜歡這種寫法。
2.this.index 與 op.style.cssText之間是怎么樣的關系
this.index 是按鈕的序號op.style.cssText = ''表示清除op的樣式。
相關文章:
1. javascript - js的shift()方法失效?2. javascript - JS使用ele.style.backgoundImage = ’’ =’none’取消背景圖片都無效3. javascript - js判斷用戶的網絡能否上網?4. javascript - js一個call和apply的問題?5. javascript - JS事件委托問題6. javascript - js 寫類似商品管理后臺頁 用什么設計模式比較好擴展和維護7. javascript - JsDoc有何很實際的具體作用?8. javascript - js讀取excel其中一列中的一個值是0.3556但是讀出來是0.35559999999999997?9. javascript - JS用ajax爬取百度外賣店家信息10. javascript - js 修改表格元素的,可以用DOM操作實現嗎?
![dockerfile - [docker build image失敗- npm install]](https://m.cgvv.com.cn/attached/image/news/202311/1028105a80.png)