4、基础应用实例
1、开关灯
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> html,body{ width: 100%; height: 100%; margin: 0; padding: 0; cursor: pointer; /*background: white;*/ } .bg0{ background: red; } .bg1{ background: blue; } .bg2{ background: white; } </style> </head> <body class="bg0" id="box" > <script> // 1、要操作谁就先获取谁 //2、绑定点击事件 //3.点击的时候 执行效果 var obox=document.getElementById("box"); //第一种: // obox.onclick=function(){ // var bg=obox.style.backgroundColor; // console.log(bg) // if(bg=="white"){ // obox.style.backgroundColor="blue"; // }else if(bg=="blue"){ // obox.style.backgroundColor="red"; // }else{ // obox.style.backgroundColor="white"; // }; //}; //第二种: obox.onclick=function sum(){ var bg=obox.className; if(bg=="bg0"){ obox.className="bg1" }else if(bg=="bg1"){ obox.className="bg2" }else{ obox.className="bg0" } }; sum() </script> </body> </html>
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> html,body{ width: 100%; height: 100%; margin: 0; padding: 0; cursor: pointer; /*background: white;*/ } .bg0{ background: red; } .bg1{ background: blue; } .bg2{ background: white; } </style> </head> <body id="box" style="background-color: white"> <script> var obox=document.getElementById("box") box.onclick=function(){ var bg=this.style.backgroundColor bg=="white"?this.style.backgroundColor="black":this.style.backgroundColor="white"; } //this 函数中 当前操作的元素 </script> </body> </html>
2、隔行换色
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> *{ margin: 0; padding: 0; } ul,li{ list-style: none; } div{ width: 500px; border: 1px solid orange; margin: 0 auto; border-radius: 20px; /*position: absolute;*/ /*top:50%;*/ } li{ height: 30px; line-height: 30px; padding: 0 20px; } .bg1{ background: gold; } .bg2{ background: green; } .bg3{ background: pink; } </style> </head> <body> <div id="box"> <ul> <li>我会变颜色</li> <li>我会变颜色</li> <li>我会变颜色</li> <li>我会变颜色</li> <li>我会变颜色</li> <li>我会变颜色</li> <li>我会变颜色</li> <li>我会变颜色</li> <li>我会变颜色</li> <li>我会变颜色</li> </ul> </div> <script> var oli=document.getElementById("box").getElementsByTagName("li"); // for 循环 // for(var i=0;i<oli.length;i++){ // var obo=oli[i]; // i%2==0?obo.className="bg1":obo.className="bg2" // }; // 拼接字符串 for(var i=0;i<oli.length;i++){ // var obo=oli[i]; oli[i].className='bg'+(i%2+1);// "bg"+(i%2+1) // 'bg'+(i%2+1)+'' //"bg"+(i%2+1)+"" // 但是"bg'+i%2+'"没法去解释 是错的 oli[i].oldName= console.log("bg"+(i%2+1)) // console.log("bg"+i%2+""); ?????拼接字符串(看单双引号的结束标签去理解,字符串中若遇到变量,要将变量两边断开 用+号拼接) // obo.oldName="bg"+i%2+""; // 自定义属性 oli[i].onmouseover=function(){ this.oldName=this.className this.className="bg3" }; oli[i].onmouseout=function(){ this.className=this.oldName }; } </script> </body> </html>
3、九九乘法表
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> *{ margin: 0; padding: 0; } ul{ list-style: none; } .box{ width: 900px; height: 270px; border: 1px solid red; border-radius: 10px; } li{ height: 30px; } span{ float: left; width: 100px; height: 30px; line-height: 30px; text-align: center; } .bg0{ background: orangered; } .bg1{ background: darkblue; } .bg2{ background: green; } .bg3{ background: pink; } </style> </head> <body> <div id="box1" class="box"></div> <script> var obox=document.getElementsByClassName("box").item(0); var oli=obox.getElementsByTagName("li"); var str=""; str+="<ul>"; for(var i=1;i<=9;i++){ str+="<li>"; for(var j=1;j<=i;j++){ str+="<span>"; str+=j+"*"+i+"="+j*i; str+="</span>"; }; str+="</li>" oli[i].className="bg"+i%3; //为什么不能放到里面?? js代码必须等结构加载完之后再加载,放到里面结构输出过程中不能识别, // 单独拿出来,另外再放到一个循环中 } str+="</ul>"; console.log(str) obox.innerText=str; //box1.innerHTML=str 直接放Id名也可以?????只有id名可以 for(var s=1;s<=9;s++){ oli[s].onmouseover=function(){ this.old=this.className;//赋值 把后面的赋给前面的 把当前样式的类名赋给old属性 // a=this.className; // 不给a定义变量,默认为全局变量 也可以实现,虽然是鼠标移入和移出两个作用域,单全局变量都可以获取 this.className="bg3"; }; oli[s].onmouseout=function(){ this.className=this.old; // this.className=a; }; }; </script> </body> </html>
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>99乘法表</title> <style> *{ margin: 0; padding: 0; font-family: arial, "微软雅黑"; font-size: 14px; } ul,li{ list-style: none; } #tab{ width: 900px; height: 270px; position: absolute; top: 30%; left: 50%; margin:-135px 0 0 -450px; border: 1px solid red; border-radius: 10px; } #tab{ height: 30px; line-height: 30px; } #tab span{ width: 100px; height: 30px; display: inline-block; text-align: center; } .c0{ background: blue; } .c1{ background: pink; } .c2{ background: gold; } .c3{ background: orange; } </style> </head> <body> <div id="tab"> <!--<ul>--> <!--<li><span>1*1=1</span></li>--> <!--<li>--> <!--<span>1*1=1</span>--> <!--<span>1*1=1</span>--> <!--</li>--> <!--<li>--> <!--<span>1*1=1</span>--> <!--<span>1*1=1</span>--> <!--<span>1*1=1</span>--> <!--<span>1*1=1</span>--> <!--</li>--> <!--<li>--> <!--<span>1*1=1</span>--> <!--<span>1*1=1</span>--> <!--</li>--> <!--</ul>--> </div> <script> var otab=document.getElementById("tab"); var str=""; //定义空字符串 str+="<ul>"; for(var i=1;i<=9;i++){ var val=""; //设定初始值 可有可无 与输出的结果无关 switch(i%3){ case(0): val="c1"; break; case(1): val="c2"; break; default : val="c3"; } str+="<li class="+val+">"; //上面switch输出一个值,为什么这里 class=val 是不对的,因为val是一个字符串 // 向字符串中添加val是变量 字符串中若遇到变量,要将变量用+号拼接到字符串中。 // str+="<li class='c"+i%3+"'>"; //拼接字符串(c0 c1 c2) 写入隔行变色样式 // str+="<li class='c"+(i%3+1)+"'>"; //拼接字符串(c1 c2 c3) 写入隔行变色样式 // console.log("<li class='c"+(i%3+1)+">"); // 能输出 注意拼接后保证class后面类名的引号 for(var j=1;j<=i;j++){ // j<=i 不能是 j<=9 否则就双向算两遍了 str+="<span>"; // 添加span标签 方便写入css样式 str+=""+j+"*"+i+"="+(j*i)+""; //str+="" 向span标签中添加内容 // j+"*"+i+"="+j*i 按引号的开始与结束去理解的 str+="</span>"; }; str+="</li>"; }; str+="</ul>"; otab.innerHTML=str; //字符串拼接:单双引号嵌套使用规则: // 1、单双引号不能同时嵌套用,外单内双 内双外单 // 2、如果一个字符串中需要增加一个变量,看最外面是""还是'' 如果是双引号,那么 "+变量+" ,如果是'' 则为 '+变量+' // (原理:看单双引号的开始与结束标记来理解) // 单双引号的使用不是外单内双 内单外双的记忆问题,而是单双引号的开始与结束的识别问题 // “”大“” “‘大’” 的意义是不一样的(第一个大字没有被引号包裹) </script> </body> </html>