每天10个前端知识点:原生篇(2)

个人博客已上线,欢迎前去访问评论!
无媛无故 - wangchloe的个人博客


以下内容若有问题烦请即时告知我予以修改,以免误导更多人。


1. js操作元素属性

  • . 属性操作符(不可以接收变量)
  • [] 中括号可以操作属性也可以接收变量
<script>
    function setValue() {
        //省略获取元素oBtn, oBtn2的伪代码
        oBtn.value = 'bbb';
        oBtn2['value'] = 'bbb';

    }
</script>

凡是. 出现的地方都可以用中括号替代

2. js设置复杂样式

非首单词的首字母大写并去掉-符

<style>
    .complex {
        margin-left: 10px;
    }
</style>
<script>
    function setStyle() {
        var oC = document.getElementsByClassName('complex')[0];
        oC.style.marginLeft = '10px';
    }
</script>

3. 物体从中心放大

  • margin-top: -变化的高度/2
  • margin-left: -变化的宽度/2

4. a链接防止刷新

<a href="#">点击会刷新页面</a>
<a href="javascript:;">点击不会刷新页面!(推荐使用)</a>
<!-- javascript:;相当于一个伪协议 -->

5. 循环添加事件,事件中的循环变量不能用

<script>
    function clickEg() {
        //获取一组按钮    ps:js一组元素不能一起改变样式或设置事件
        var aBtn = document.getElementsByTagName('button');
        for(var i = 0; i < 3; i++) {
            aBtn[i].onclick = function() {
                //循环中的i变量此时已自增至3
                //aBtn[i].style.background = '#f00';

                //当前事件发生的对象 aBtn[i]为this
                this.style.background = 'f00';
            }
        }
    }
</script>

6. 浏览器加载的过程

1.加载整个页面的标签和属性
2.过滤不符合W3C标准的标签和属性(高级浏览器)
3.执行js -> window.onload

7. DOM获取元素方法

1.document.getElementById('id');
2.document/obj.getElementsByTagName('TagName');
3.document/obj.getElementsByClassName('ClassName');
兼容:Chrome、FF、IE9+

obj.getElementsByClassName

  • 高级浏览器 -> function
  • IE8- -> undefined

兼容写法

<script>
    function getByClass(obj, sClass) {  // obj为从哪个父级下面查找类为sClass的元素
            if(obj.getElementsByClassName) {    // IE8- -> undefined  高级浏览器 -> function
                return obj.getElementsByClassName(sClass);  // 高级浏览器
            } else {    // IE8
                var aEle = document.getElementsByTagName('*');
                var arr = [];
                for(var i=0; i<aEle.length; i++){
                    var temp = aEle[i].className.split(' ');
                    if(findInArr(sClass, temp)) {
                        arr.push(aEle[i]);
                    }
                }
                return arr;
            }
        }
</script>
  • getElementById只能从document下获取
    var oDiv = document.getElementById('id');
  • getElementsByTagName/getElementsByClassName可以从document下获取,也可以从父级下获取
    var oDiv2 = document.getElementsByClassName('ClassName')[0];
    var oDiv3 = oBox.getElementsByTagName('TagName')[0];

8. js中的真假

  • 真:非0数字,非空字符串,true,非空对象
  • 假:0,空字符串(''),false,空对象(null),undefined,NaN

9. 获取元素当前样式(兼容)

<script>
    function getStyle(obj, name){   //元素,样式名称
        if(obj.currentStyle) {  // Chrome、FF -> undefined   IE -> object
            // IE系
            return obj.currentStyle[name];  // 兼容IE系
        } else {
            // Chrome、FF
            return getComputedStyle(obj, false)[name];  // 兼容高级浏览器(Chrome、FF、IE9+)
        }

    }
</script>

简化

<script>
    function getStyle(obj, name){   //元素,样式名称
        return (obj.currentStyle || getComputedStyle(obj, false))[name];
    }

    // 调用
    console.log(parseInt(getStyle(oDiv, 'heihgt')));
</script>

10. 获取一个n~m之间的随机数(n<m,且不包括m)

<script>
    function rnd(n, m) {
        return parseInt(Math.random() * (m - n) + n);
    }
</script>

应用:随机变色

<script>
// rgb色值范围[0, 255]
oDiv.style.background = 'rgb(' + rnd(0, 256) + ',' + rnd(0, 256) + ',' + rnd(0, 256) + ')';
</script>


---
更多内容可以订阅本人微信公众号,一起开启前端小白进阶的世界!

公众号是坚持日更的,不发文的时候推送一些我觉得好用的前端网站或者看到的一些问题的解决方案,也更便于大家交流,就酱。

![微信公众号:无媛无故](http://upload-images.jianshu.io/upload_images/2125655-f7a4736d8601eb14.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • 一、JS前言 (1)认识JS 也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HT...
    凛0_0阅读 2,752评论 0 8
  • 我们首先要明白,我们给页面添加效果用到的js到底是什么?js其实包含三部分:dom 文档对象模型 bom 浏览...
    一直以来都很好阅读 792评论 0 0
  • DOM DOM内容主要分为四部分: 什么是DOM和节点; 获取节点; 节点操作(3种); 属性操作(3种)。 什么...
    magic_pill阅读 760评论 0 1
  • 想要不被世界伤害!就要学会世界上一切!好的坏的!悉数吸干造尽! 不是为了伤人!是为了能更好的救人!共勉! 不要怪那...
    纵情嬉戏天地间阅读 93评论 0 0
  • 今天是八月的第一天也是我参加创客孵化营大赛的第八天,多么吉利的数字两个八注定我这个月要发了,哈哈哈......感觉...
    心梦飞翔h阅读 328评论 0 1