js學(xué)習(xí)筆記----Day06js動態(tài)加載和event對象

JSON

  • json一種輕量級的數(shù)據(jù)交換格式, json是一種數(shù)據(jù)傳輸?shù)姆绞?/li>
  • json是js對象的字符串表示法, json本質(zhì)就是一個字符串
    格式:
var data = {
    width:'100px',
    height:'100px',
    background:'red',
    border:'10px solid #ccc'
};

JS對象表示法

  1. 點(diǎn)語法
box.style.width = data.width;
box.style.height = data.height;
box.style.background = data.background;
box.style.border = data.border;

  1. dom操作
box.style['width'] = data['width'];
box.style['height'] = data['height'];
box.style['background'] = data['background'];
box.style['border'] = data['border'];

遍歷js對象
  • 增強(qiáng)for循環(huán)
  1. 遍歷屬性名
console.log(key, typeof key);
  1. 遍歷屬性值
//此時的key是動態(tài)修改的

box.style[key] = data[key];

注意: 不能用點(diǎn)語法取屬性值


//這個方法是錯誤的, 因?yàn)槭褂命c(diǎn)語法取值的前提是key必須是data里的屬性, 并不能動態(tài)修改. 所以這里無法取到, 只能使用[]中括號(dom操作)取屬性值.

box.style.key = data.key;

自定義屬性方法

  • 賦值 setAttribute(鍵值對); 無返回值

  • 取值 getAttribute(屬性名); 返回屬性值

注意: 使用多次set方法給同一個屬性賦值, 后面會覆蓋前面的

事件認(rèn)識

  • 事件也是對象
  • 事件通常與函數(shù)配合使用玻淑,這樣就可以通過發(fā)生的事件來驅(qū)動函數(shù)執(zhí)行。

Event對象 !!!

  • Event 對象代表事件的狀態(tài),比如事件在其中發(fā)生的元素、鍵盤按鍵的狀態(tài)搏嗡、鼠標(biāo)的位置套才、鼠標(biāo)按鈕的狀態(tài)乎完。
  • 事件通常與函數(shù)結(jié)合使用掰读,函數(shù)不會在事件發(fā)生前被執(zhí)行!
添加事件
  • 需求: 獲取點(diǎn)在box上的坐標(biāo)點(diǎn)

  • event.clientX //哪個元素響應(yīng)事件, 就是哪個元素上的點(diǎn)坐標(biāo)

  • event.clientY


//onmousedown  鼠標(biāo)按鈕被按下躺屁。

//onmouseover  鼠標(biāo)移到某元素之上

//onmousemove  鼠標(biāo)被移動肯夏。
//onmouseup    鼠標(biāo)按鍵被松開。
//event 對象, 只要添加事件, 系統(tǒng)就會傳遞一個event對象
box.onmousedown = function (event) {
    //console.log(1111);
    //獲取box中鼠標(biāo)點(diǎn)坐標(biāo)
    console.log(event.clientX);
    console.log(event.clientY);
}

windows.event不支持火狐

  • 鼠標(biāo)點(diǎn)擊event的兼容性寫法

var eve = event || window.event;
console.log(eve.clientX);
console.log(eve.clientY);

offset

1.offsetHeight = height + padding + border
2.offsetWidth = width + padding + border
3.offsetLeft 相對于祖先元素定位的左邊距離
4.offsetTop 相對于祖先元素定位的上邊距離
5.offsetParent 獲取祖先定位的元素的盒子

    //offsetWidth 獲取當(dāng)前元素的寬度
    //offsetWidth = width + padding *2 + border *2
    console.log(son.offsetWidth);
//獲取定位父元素的頂部距離.
console.log(box.offsetTop);
  • 不建議用js方式獲取width的屬性值

son.style.width = '200px';

console.log(son.style.width); //只有這一行不可拿到width值. reason: 非行內(nèi)級

應(yīng)用: 鼠標(biāo)移動
<script>
    var box = document.getElementById('box');

    box.onmousedown = function (ev) {
        //注意: 不同觸發(fā)事件中使用一次用一次
        var event = event || window.event;

        //當(dāng)前鼠標(biāo)點(diǎn)距離盒子左邊的距離
        var x = event.clientX - box.offsetLeft;
        var y = event.clientY - box.offsetTop;


        document.onmousemove = function (ev) {
            //注意: 在哪使用事件對象, 就在哪獲取事件對象
            var event = event || window.event;

            var top = event.clientY - y;
            var left = event.clientX - x;

            console.log(box.offsetTop);
            console.log(box.offsetLeft);


            box.style.top = top + 'px';
            box.style.left = left + 'px';
        }
        box.onmouseup = function (ev) {
            document.onmousemove = null;
        }
    }
</script>
滾動事件
  • 滾動事件:在元素滾動條在滾動時觸發(fā)
  • 只要滾動條發(fā)生滾動,就會調(diào)用onscroll
  • 可以獲得滾動距離scrollTop : 向上滾出頁面的長度.
// 兼容寫法
var top = document.documentElement.scrollTop || document.body.scrollTop;

回調(diào)函數(shù)

var box = document.getElementById('box');
// var btnlist = document.getElementsByTagName('button');
var btnlist = box.children;

//將函數(shù)作為參數(shù)傳入, 實(shí)現(xiàn)一個功能
function getEleColor(obj, color) {
    obj.style.backgroundColor = color;
}

function changeEleWidth(obj, width) {
    obj.style.width = width;
}

function changeStyle(btnlist, fn, item) {
    for(var i = 0; i < btnlist.length; i++){
        fn(btnlist[i], item);
    }

}

changeStyle(btnlist, changeEleWidth, '150px');
changeStyle(btnlist, getEleColor, 'orange');
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末犀暑,一起剝皮案震驚了整個濱河市驯击,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耐亏,老刑警劉巖徊都,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異广辰,居然都是意外死亡暇矫,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門择吊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來李根,“玉大人,你說我怎么就攤上這事几睛》拷危” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長冀续。 經(jīng)常有香客問我琼讽,道長必峰,這世上最難降的妖魔是什么洪唐? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮吼蚁,結(jié)果婚禮上凭需,老公的妹妹穿的比我還像新娘。我一直安慰自己肝匆,他們只是感情好粒蜈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旗国,像睡著了一般枯怖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上能曾,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天度硝,我揣著相機(jī)與錄音,去河邊找鬼寿冕。 笑死蕊程,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驼唱。 我是一名探鬼主播藻茂,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼玫恳!你這毒婦竟也來了辨赐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤京办,失蹤者是張志新(化名)和其女友劉穎肖油,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體臂港,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡森枪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了审孽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片县袱。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖佑力,靈堂內(nèi)的尸體忽然破棺而出式散,到底是詐尸還是另有隱情,我是刑警寧澤打颤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布暴拄,位于F島的核電站漓滔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乖篷。R本人自食惡果不足惜响驴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望撕蔼。 院中可真熱鬧豁鲤,春花似錦、人聲如沸鲸沮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讼溺。三九已至楣号,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間怒坯,已是汗流浹背炫狱。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留敬肚,地道東北人毕荐。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像艳馒,于是被迫代替她去往敵國和親憎亚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355