上方为输入事情添加
下左为未办,右边为已办
- <body>
- <h3>待办h3>
- 新事情:<input type="text" name="" id="event"/>
- <button onclick="addevent();">提交button>
- <hr>
- <div>
- <table id="tab">
-
- table>
- div>
-
- <div>
- <table id="tab2">
-
- table>
- div>
- body>
- div{
- width: 45%;
- margin-left: 2%;
- float: left;
- border-top: 1px solid green;
- }
- #tab,#tab2{
- border-collapse: collapse;
- width: 100%;
- /* margin: 0 auto; */
- }
- tr{
- border-top: 1px solid green;
- border-bottom: 1px solid green;
- }
- td{
- background-color: rgb(186, 255, 255);
- }
- .td1{
- width: 5px;
- }
- .td2{
- width: 510px;
- /* background-color: red; */
- }
先顺思路
1. 获取input的内容,按行添加进table中,每行前均加一个多选框
2. 多选框的值为真,将此行挪至右边
3. 取消右边多选框的勾,将其返回至左边
4. 增加一个删除链接
addevent函数写出一个tr行,【设置了3列,多选框,内容,单删除】,将此行头插进table,并删除input框中的内容(调动delinp函数)
第一列中附有moveture函数,当此框被选中时,将其挪至右边的table中;
第三列附有delthi函数,当被选中时进行单删
movetrue函数,利用this传进去的是多选框,所以要想上查找到父节点tr,在左边进行删除,在右边进行追加
delthis函数,同样利用this,找到父节点tr,获取tr的行号进行删除
- function delinp(){ // 输出输入框中输入的内容
- document.getElementById('event').value='';
- }
- function addevent(){
- var tr='
'+- '
'+- ''+
- '
'+ - '
'+- document.getElementById('event').value
- +'
'+ - '
'+- ''+
- '
'+ - '
' - console.log(tr);
- var tab=document.getElementById('tab');
- trs=tab.insertRow(0);
- trs.innerHTML=tr;
-
- delinp();
- }
- function movetrue(inp){
- var tab=document.getElementById('tab'); //获取父节点,删除子节点
- var tab2=document.getElementById('tab2');
- // console.log(inp.checked);
- var tr=inp.parentNode.parentNode; //获取该节点的父节点tr
- if(inp.checked){
- // 删除上面挪至下方
-
- tab.deleteRow(tr.rowIndex);
- tab2.appendChild(tr);
- console.log(tr.rowIndex);
- }else{
- // 将下方的挪至上方
- tab2.deleteRow(tr.rowIndex);
- tab.appendChild(tr);
- }
-
- }
- function delthis(a){
- var tr=a.parentNode.parentNode;
- var tab=tr.parentNode;
- tab.deleteRow(tr.rowIndex);
- }
实现状态:
当鼠标经过或悬停在某个小图上时,大图随之进行变化【图片如果大小合适,就不用向我一样写img的css】
- #imgb{
- width: 200px;
- height: 200px;
- }
- .imgs{
- border: 2px solid white;
- padding: 2px;
- width: 50px;
- height: 50px;
- }
- #showdiv{
- /* border: 1px solid; */
- width: 210px;
- height: 270px;
- text-align: center;
- margin: 0 auto;
- }
- <body>
- <script>
- function addborder(imgsl,src){
- imgsl.style.border='2px solid black';
-
- var big=document.getElementById('imgb');
- big.src=src;
- }
- function subborder(imgs){
- imgs.style.border='';
- }
- script>
- <div id="showdiv">
- <img id="imgb" src="big1.png" alt="">
- <img class="imgs" src="small1.jpg" alt="" onmouseover="addborder(this,'big1.png');" onmouseleave="subborder(this);">
- <img class="imgs" src="small2.jpg" alt="" onmouseover="addborder(this,'big2.png');" onmouseleave="subborder(this);">
- <img class="imgs" src="small3.jpg" alt="" onmouseover="addborder(this,'big3.png');" onmouseleave="subborder(this);">
- div>
- body>
给每个小图加上鼠标经过时白色边框变成黑色边框,当离开后,将黑色边框变白【白色边框保证图片不会大小变】
利用this传递所指的img,并附带所匹配的大图路径
函数中:获取大图的src并进行更改【style为空时,会找最前优先级进行替补】
鼠标经过时,下拉菜单出现,鼠标离开,下拉菜单消失【可不是指下拉菜单select】
思路:
1. 设置一个div,里面包含div和ol>li
2. 将ol设置为不可见,鼠标经过大div时,ol出现,鼠标离开后,ol消失
- <div class="nav" id="box">
- <div>总体菜单div>
- <ol class="dsy">
- <li><a href="#">菜单1a>li>
- <li><a href="#">菜单2a>li>
- <li><a href="#">菜单3a>li>
- <li><a href="#">菜单4a>li>
- <li><a href="#">菜单5a>li>
- ol>
- div>
- <style>
- *{
- padding: 0;
- margin: 0;
- list-style: none;
- }
-
- .nav{
- width: 100px;
- background-color: rgb(200, 255, 255);
- height: 40px;
- margin: 0 auto;
- margin-top: 30px;
- }
- .dsy{
- display: none;
- }
- ol>li{
- width: 100px;
- height: 40px;
- text-align: center;
- line-height: 40px;
- background-color: rgb(216, 255, 178);
- border: 1px solid rgb(117, 117, 117);
- /* float: left; */
- margin-right: 20px;
- }
- style>
注意:ol的设置为display:none
js就很简单了,只不过和前面有点不同,onmouseover写在了变量后,以后的写法基本就是这样,不再给html加事件,仅在js中完成【除特殊情况,例如】
- var box=document.querySelector('#box');
- var dsy=document.querySelector('.dsy');
-
- box.onmouseover = function() {
- console.log('鼠标进入了');
- dsy.style.display = 'block';
-
- }
-
- box.onmouseout = function() {
- console.log('鼠标离开了');
- dsy.style.display = 'none';
- }
当倒计时结束后,重新变为发送,点击发送,开始倒计时
认识新函数querySelector:选取第一个匹配的元素;addEventListener:给某个元素添加监听器【同经常使用的这几个大致一样】
还记得setInterval 和 clearInterval 吗 【设置间隔器和清除间隔器】
思路:
1. 获取按钮元素,并设置倒计时的时间
2. 为按钮添加监听器,点击后按钮变为不可选中,并更改按钮颜色
3. 设置一个间隔器,每隔1s执行一次,执行过程设置的倒计时自减,当time减为0,为其重新赋值并清除间隔器和不可选中属性
- <body>
- 手机号:<input type="number" placeholder="请输入我的手机号" /><button>sendbutton>
- <script>
- var btn=document.querySelector('button');
- var time=3;
- console.log('刷新页面就有');
- btn.addEventListener('click',function(){
- console.log('点击了');
- btn.disabled=true;
- btn.style.backgroundColor='gray';
- var tms=setInterval(function(){
- // 添加计时器,每隔1s执行一次
- if(time == 0){
- // 当3秒执行完成后,按钮不可点的状态取消
- clearInterval(tms);
- time=3;
- btn.disabled=false;
- btn.style.backgroundColor='';
- btn.innerHTML='发送';
- }else{
- // 当在3秒内时,time每隔1s进行自减操作
- btn.disabled=true;
- btn.innerHTML='还剩下'+time+'秒';
- time--;
- }
- },1000);
- })
- script>
- body>
点击发送,将内容移至下方并清空输入框的内容,点击删除,删除该条评论
- <style>
- textarea{
- width: 200px;
- height: 50px;
- resize: none;
- }
- .sp{
- font-size: 8px;
-
- }
- .fons{
- font-size: 6px;
- font-weight: bold;
- }
- style>
- <textarea>textarea>
- <button>sendbutton>
- <ul>
-
- ul>
- <script>
- var btn=document.querySelector('button');
- var txt=document.querySelector('textarea');
- var ul=document.querySelector('ul');
-
- // 生成时间年月日时分
- var time=new Date();
- year=time.getFullYear();
- month=time.getMonth()+1;
- day=time.getDate();
- hour=time.getHours();
- minute=time.getMinutes();
- var tm=year+'-'+month+'-'+day+' '+hour+':'+minute;
- // console.log(tm);
-
- btn.onclick=function(){
- if(txt == ''){
- alert('没有输入东西');
- return;
- }else{
-
- var li=document.createElement('li');
-
- li.innerHTML=txt.value+' '+tm+''+'删除';
- ul.insertBefore(li,ul.children[0]);
-
- li.children[1].onclick=function(){
- ul.removeChild(this.parentNode);
- }
- }
- txt.value='';
- }
- script>
思路:
1. 获取各元素信息,并生成时间的字符串
2. 检测输入的内容是否为空,为空则返回
3. 不为空则生成子节点(li),为li节点加上时间与删除字样,进行插入节点
4. 当点击到li子节点的【i】 删除,对li进行移除
注意:getMonth() 比当前月份少1