JavaScript 拾遗

Tips:

JS在网页中放置的位置:

//==> 真实项目中我们一般会把CSS放在body的上面,把JS放在body的末尾(约定俗成的规范)。

//==> body中编写的都是HTML标签,JS很多时候都需要操作这些元素,首先我们要保证这些元素加载成功,才可以在JS中获取到(JS放在结构之后加载,JS放在body的末尾)

//==> 如果把JS放在HTML标签前面了,如何等到结构加载完成在加载JS?

//==> 原生JS:window.onload = function(){} 当页面中所有资源结构都加载完成执行操作。

//==> 利用JQ:$(document).ready(function(){}) 页面中的结构加载完成就会执行操作。

// 自己写:window.addEventListener('load',function(){},false) 但是这种方法在ie 6 7 8不兼容 / window.attachEvent('onreadystatechange',function(){}) ie下用这个 jQuery源码

 =====================

1.HTML属性操作

属性名: id  type value....

属性值:'btn'  'button'  '按钮'.....

<input type="button" value="button" id="btn">

属性读操作:获取、找到  语法:元素.属性名 这样就可以找到引号中的属性值

<body>
<script>
    window.onload = function () {
        var oBtn = document.getElementById('btn');
        console.log(oBtn.type);  // 结果:button
        console.log(oBtn.value);  // 结果:按钮
        console.log(oBtn.id);  // 结果:btn
    }
</script>
<input type="button" value="按钮" id="btn">
</body>

 Example 1 => 获取属性值

<body>
<script>
    window.onload = function () {
        var oBtn = document.getElementById('btn'),
            oText = document.getElementById('text'),
            oSelect = document.getElementById('areaSelect');

        oBtn.onclick = function () {
            alert(oText.value + '在' + oSelect.value);
        }
    }
</script>
<input type="text" id="text" placeholder="请输入……" />
<select name="" id="areaSelect">
    <option value="北京">北京</option>
    <option value="上海">上海</option>
    <option value="广东">广东</option>
</select>
<input type="button" value="按钮" id="btn" />
</body>

 

属性写操作:(“添加”)替换、修改  语法:元素.属性名 = 新的值  

Example 2 => 修改图片路径

<body>
<script>
    window.onload = function () {
        var oBtn = document.getElementById('btn'),
            oText = document.getElementById('text'),
            oImg = document.getElementById('img');
        oBtn.onclick = function () {
            oImg.src = oText.value;
        }
    }
</script>
<input type="text" id="text" placeholder="请输入……" />
<input type="button" value="按钮" id="btn" />
<br />
<img src="img/1.jpg" id="img" />
</body>

  添加:oDiv.innerHTML += oText.value;  内容的修改替换是直接用 = 号的,添加就要用 += 号

//=> 属性读写操作注意事项:

1、所有的相对路径地址

img src

href ="1.css"  href="htnl/index.html"

绝对路径地址是可以用来判断的

2、颜色值:color: red #f00 rgb() rgba()

3、innerHTML值  别用来做判断,会引发兼容性的问题

Example 3 => 通过两个按钮改变字体大小案例

<body>
<script>
    window.onload = function () {
        var oBtn1 = document.getElementById('btn1'),
            oBtn2 = document.getElementById('btn2'),
            oPar = document.getElementById('par'),
            num = 16;
        oBtn1.onclick = function () {
            num--;
            oPar.style.fontSize = num + "px";

        };
        oBtn2.onclick = function () {
            num++;
            oPar.style.fontSize = num + "px";
        };
    }
</script>
<input type="button" id="btn1" value="A-" />
<input type="button" id="btn2" value="A+" />
<p id="par">You may skip through a book, reading only those passages concerned.</p>
</body>

 浮动兼容性注意事项 ie 和其他标准浏览器

<input id="inp1" type="text" />
<script>
var oInp = document.getElementById('inp1');

oInp.onclick = function (){
	
	oInp.type = 'checkbox';
	
	// 咱们有仨位“祖宗”
	/*
		IE6 IE7 IE8
	*/
};

/*
	oDiv.style.float = 'right';  不起作用的,用下面的方法
	
	oDiv.style.styleFloat = 'right';		// IE
	oDiv.style.cssFloat = 'left';			// 非IE
	
	IE(styleFloat)
	非IE(cssFloat)
	
	最好的方式可以直接改class属性
	<div class="right"></div>
*/
</script>

  

 中括号的使用  []

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            border: 1px solid #ff0000;
        }
    </style>
</head>
<body>
<script>
window.onload = function () {
    var oAttr = document.getElementById('attr'),
        oVal = document.getElementById('val'),
        oBtn = document.getElementById('btn'),
        oDiv = document.getElementById('div1');
    // js中允许把“.”替换成[],并且没有兼容性的问题
    // oBtn['onclick'] = function () 这里把“.” 换成了[] 效果一样 别忘了中括号中的引号
    oBtn.onclick = function () {
        // oDiv.style.width = oVal.value;  style. 点后面的值,无法修改
        oDiv.style[oAttr.value] = oVal.value; // [] 里的值是可以随便写
    }
}
</script>
输入属性名:<input type="text" id="attr" />
输入属性值:<input type="text" id="val" />
<input type="button" value="确定" id="btn" />

<div id="div1"></div>
</body>
</html>

  

在判断语句中设置开关 - 当判断的条件是上文中不允许的几种情况下,可以设置一个开关,来做相应的判断

<script>
    window.onload = function () {
        var oImg = document.getElementById('img1');
        var onOff = true; // 设置开关  布尔值:true 1  false 0

        oImg.onclick = function () {
            // if( oImg.src == 'img/2.jpg' ){ 相对路径不能判断
            // 有条件,就用现成的,如果没有,创造条件也得做事
            if (onOff) {
                oImg.src = "img/3.jpg";
                onOff = false;  // 关闭开关
            } else {
                oImg.src = "img/1.jpg";
                onOff = true;  // 再打开开关
            }

        }
    }
</script>
<img src="img/1.jpg" id="img1">
</body>

  

 小练习:制作图片切换效果,并且设置切换模式。循环切换顺序切换,这里利用到了:

1.数字(num)与数组的匹配;

2.条件的嵌套,并且设置一个开关;

3.同样代码放入一个函数中,做到代码优化。

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <title>slideImgs</title>
    <style>
        #content {
            width: 400px;
            height: 400px;
            border: 10px solid #cccccc;
            margin: 10px auto 0;
            position: relative;
            background: #000;
        }
        #content a {
            width: 40px;
            height: 40px;
            background: #000;
            border: 5px solid #ffffff;
            position: absolute;
            top: 175px;
            text-align: center;
            text-decoration: none;
            line-height: 40px;
            color: #ffffff;
            font-size: 30px;
            opacity: 0.5;
            filter: alpha(opacity:50);
        }
        #content a:hover{
            opacity: 0.8;
            filter: alpha(opacity:80);
        }
        #prev {
            left: 10px;
        }
        #next {
            right: 10px;
        }
        #text, #span1 {
            width: 400px;
            height: 30px;
            position: absolute;
            background: #000;
            color: #ffffff;
            left: 0;
            line-height: 30px;
            text-align: center;
            opacity: 0.6;
            filter: alpha(opacity:60);
        }
        #text {
            margin: 0;
            bottom: 0;
        }
        #span1 {
            top: 0;
        }
        #img1 { width: 400px; height:400px;}
        #top{width: 400px; margin: 10px auto 0; text-align: center;}
        #tipText{margin: 10px 0 0; padding: 0;}
    </style>
</head>
<body>
<script>
    window.onload = function () {
        var oPrev = document.getElementById('prev'),
            oNext = document.getElementById('next'),
            oP = document.getElementById('text'),
            oSpan = document.getElementById('span1'),
            oImg = document.getElementById('img1'),
            oBtn1 = document.getElementById('btn1'),
            oBtn2 = document.getElementById('btn2'),
            oTip = document.getElementById('tipText'),
            onOff = true;


        var arrUrl = ['img/1.jpg', 'img/2.jpg', 'img/3.jpg', 'img/4.jpg'],
            arrText = ['女战士','机器体育','妖姬','二次元'],
            num = 0; // 有数组的地方一般都放有数字

        oBtn1.onclick = function () {
            onOff = true;
            oTip.innerHTML = "循环切换";
        };
        oBtn2.onclick = function () {
            onOff = false;
            oTip.innerHTML = "顺序切换";
        };

        // 初始化
        function fnTab () {
            oSpan.innerHTML = (num+1) + '/' + arrText.length;
            oImg.src = arrUrl[num];
            oP.innerHTML = arrText[num];
        }
        fnTab ();

        oPrev.onclick = function () {
            num --;
            if (num == -1) {
                if (onOff){
                    num = arrUrl.length - 1;
                } else {
                    alert("已经是第一张图片了!");
                    num = 0;
                }
            }
            fnTab ();
        };

        oNext.onclick = function () {
            num ++;
            if (num == arrUrl.length) {
                if (onOff) {
                    num = 0;
                } else {
                    alert("已经是最后一张图片了!");
                    num = 3;
                }

            }
            fnTab ();
        };
    }
</script>
<div id="top">
    <input type="button" value="循环切换" id="btn1" />
    <input type="button" value="顺序切换" id="btn2" />
    <p id="tipText">循环切换</p>
</div>
<div id="content">
    <a href="javascript:;" id="prev"><</a>
    <a href="javascript:;" id="next">></a>
    <p id="text">图片文字加载中……</p>
    <span id="span1">数量正在计算中……</span>
    <img id="img1">
</div>
</body>
</html>

  

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
        window.onload = function () {
            document.title = 123; // title 也是如此获取,因为页面中也只有一个title标签
            document.body.innerHTML = "页面中只有一个标签的时候,可以用这种方法获取元素。";
        }
    </script>
</head>
<body>
</body>

getElementsByTagName 的动态方法特性

    <script>
        window.onload = function () {
            var oBtn = document.getElementsByTagName('input'); // 动态特性体现在它可以获取到后来添加的内容

            document.body.innerHTML = "<input type='button' value='按钮' /><input type='button' value='按钮' /><input type='button' value='按钮' />";
            alert(oBtn.length);  // 3 如果是getElementById 就不能这么动态获取了
        }
        // ById 和 ByTagName 的区别:
        // 1.id前面只能跟document,而tagName前面即可是document,又可以跟其他的元素
        // 2.id只能找一个,tagName找的是一堆,用[索引]
        // 3.动态特性体现在它可以获取到后来添加的内容,这里要在添加新元素的下面去获取,新元素上面还是获取不到
    </script>

  

 

进度 3-6

 

posted @ 2018-04-11 09:05  千行路  阅读(129)  评论(0编辑  收藏  举报