2022.11.17

107 阅读3分钟

1.原生js实现表格分页查询功能


/**
 * 2019/8/20更新
 * 分页函数
 * pno--页数
 * psize--每页显示记录数
 * 分页部分是从真实数据行开始,因而存在加减某个常数,以确定真正的记录数
 * 纯js分页实质是数据行全部加载,通过是否显示属性完成分页功能
 **/
function goPage(pno,psize){
    var itable = document.getElementById("idData");
    var num = itable.rows.length;//表格所有行数(所有记录数)
    //console.log(num);
    var totalPage = 0;//总页数
    var pageSize = psize;//每页显示行数
    //总共分几页 
    if(num/pageSize > parseInt(num/pageSize)){   
            totalPage=parseInt(num/pageSize)+1;   
       }else{   
           totalPage=parseInt(num/pageSize);   
       }   
    var currentPage = pno;//当前页数
    var startRow = (currentPage - 1) * pageSize+1;//开始显示的行  31 
       var endRow = currentPage * pageSize;//结束显示的行   40
       endRow = (endRow > num)? num : endRow;    //40
      // console.log(endRow);
       //遍历显示数据实现分页
    for(var i=1;i<(num+1);i++){    
        var irow = itable.rows[i-1];
        if(i>=startRow && i<=endRow){
            irow.style.display = "table-row";    
			//irow.cells.style.width = "11%"; 
        }else{
            irow.style.display = "none";
			//irow.cells.style.width = "11%"; 
        }
    }
    //var pageEnd = document.getElementById("pageEnd");
    var tempStr = "共"+num+"条数据 分"+totalPage+"页 当前第"+currentPage+"页&nbsp;&nbsp;";
    if(currentPage>1){
        tempStr += "<a href=\"#\" class=\"btn btn-sm btn-primary\" onClick=\"goPage("+(1)+","+psize+")\">首页</a>&nbsp;&nbsp;";
        tempStr += "<a href=\"#\" class=\"btn btn-sm btn-primary\" onClick=\"goPage("+(currentPage-1)+","+psize+")\">上一页</a>&nbsp;&nbsp;"
    }else{
        tempStr += "<a href=\"#\" class=\"btn btn-sm btn-metal\" >首页</a>&nbsp;&nbsp;";
        tempStr += "<a href=\"#\" class=\"btn btn-sm btn-metal\" >上一页</a>&nbsp;&nbsp;";   
    }

    if(currentPage<totalPage){
        tempStr += "<a href=\"#\" class=\"btn btn-sm btn-primary\" onClick=\"goPage("+(currentPage+1)+","+psize+")\">下一页</a>&nbsp;&nbsp;";
        tempStr += "<a href=\"#\" class=\"btn btn-sm btn-primary\" onClick=\"goPage("+(totalPage)+","+psize+")\">尾页</a>&nbsp;&nbsp;";
    }else{
        tempStr += "<a href=\"#\" class=\"btn btn-sm btn-metal\" >下一页</a>&nbsp;&nbsp;";
       tempStr += "<a href=\"#\" class=\"btn btn-sm btn-metal\" >尾页</a>&nbsp;&nbsp;";   
    }
	
	tempStr +="跳转至";
	tempStr +="<select class='' style='width:60px' οnchange='goPage(this.value,"+psize+")'>"; 
	tempStr +="<option></option>"
	for(var j=1;j<=totalPage;j++){
		tempStr +="<option  value='"+j+"' >第"+ j +"页</option>";
	}
	tempStr +="</select>";
    document.getElementById("barcon").innerHTML = tempStr;
    
}

blog.csdn.net/weixin_4256…

2.伪数组转换成真数组 1.创建一个空数据,遍历放进空数组中 2.使用slice方法:利用Array原型对象的slice方法,配合apply,将slice中的this指向伪数组

var ali = document.getElementsByTagName('li');
console.log(ali);       // [li, li, li, li]
// ali.push("hello");      // TypeError: ali.push is not a function

var arr = Array.prototype.slice.apply(ali);

arr.push("hello");
console.log(arr);       // [li, li, li, li, "hello"]

3.利用ES6提供的Array的from方法

var ali = document.getElementsByTagName('li');
console.log(ali);       // [li, li, li, li]
// ali.push("hello");      // TypeError: ali.push is not a function

var arr = Array.from(ali);

arr.push("hello");
console.log(arr);       // [li, li, li, li, "hello"]

4.利用ES6提供的展开运算符(…)

var ali = document.getElementsByTagName('li');
console.log(ali);       // [li, li, li, li]
// ali.push("hello");      // TypeError: ali.push is not a function

var arr = [...ali];

arr.push("hello");
console.log(arr);       // [li, li, li, li, "hello"]

原文:blog.csdn.net/weixin_4163…

3.vue中v-for遍历循环对象 v-for=(val,key,i) in user val:值 key:键名 i: 索引

4.表格单元格宽度设置为百分比,如何设置超出显示省略号,不管怎么设置还是会被内容撑开

可以在 table上加上一个样式:

table-layout: fixed;/*列宽由表格宽度和列宽度设定。*/

5.text-align对行内块元素有作用

6.elementui中upload组件限制上传文件类型

1.使用accept属性,限制上传类型(好处是,在点击上传的时候会将其他类型的文件过滤掉)

<el-upload
	class="upload-demo"
	drag
	action="(服务器地址)"
	:on-change="handleChange"
	:headers="headers"
	:data="listData"
	name="list"
	ref="upload"
	accept=".xls,.xlsx"
	>
	<i class="el-icon-upload"></i>
	<div class="el-upload__text">
		将xls/xlsx文件拖到此处,或<em>点击上传</em>
	</div>
</el-upload>

  1. 使用before-upload,好处是在你将其他类型的文件上传后,会有提示信息,提示你文件类型不对
<el-upload
              class="upload-demo"
              drag
              action="(服务器地址)"
              :on-change="handleChange"
              :headers="headers"
              :data="listData"
              name="list"
              ref="upload"
              :before-upload="handleBefore"
            >
              <i class="el-icon-upload"></i>
              <div class="el-upload__text">
                将xls/xlsx文件拖到此处,或<em>点击上传</em>
              </div>
</el-upload>
handleBefore(file) {
      var testmsg = file.name.substring(file.name.lastIndexOf('.') + 1)
      const extension = testmsg == 'xls'
      const extension2 = testmsg == 'xlsx'
      if (!extension && !extension2) {
        this.$message({
          message: '上传文件只能是 xls、xlsx格式!',
          type: 'warning'
        })
      }
      return extension || extension2
    },

7.vue中图片预览可缩放、拖拽

预览:

1.可以使用elementui中的image组件 2.可以使用elementui中的弹框组件,弹窗内引入图片 动态给图片地址

<el-dialog
title="图片展示"
:visible.sync="enlargeDialogVisible"
width="800"
>
<div ref="box" style="position:relative;width: 100%;height: 100%;display: flex;justify-content: center;align-items: center;overflow: hidden;" @mousewheel.prevent="rollImg($event)">
 <img id="enlargePic" ref="imgDiv" :src="currentImg" alt="" style="position: absolute" @mousedown="move($event)">
</div>
</el-dialog>

缩放:

// 缩放图片
rollImg(e) {
e.stopPropagation()
this.zoomVal += e.wheelDelta / 1200
if (this.zoomVal >= 0.2) {
 this.$refs.imgDiv.style.transform = `scale(${this.zoomVal})`
} else {
 this.zoomVal = 0.2
 this.$refs.imgDiv.style.transform = `scale(${this.zoomVal})`
 return false
}
},

拖拽

// 拖拽缩放的图片
move(e) {
  e.preventDefault()
  e.stopPropagation()
  // 获取元素
  var left = this.$refs.box
  var img = this.$refs.imgDiv
  var x = e.pageX - img.offsetLeft
  var y = e.pageY - img.offsetTop
  // 添加鼠标移动事件
  left.addEventListener('mousemove', move)
  function move(e) {
    img.style.left = e.pageX - x + 'px'
    img.style.top = e.pageY - y + 'px'
  }
  // 添加鼠标抬起事件,鼠标抬起,将事件移除
  img.addEventListener('mouseup', function() {
    left.removeEventListener('mousemove', move)
  })
  // 鼠标离开父级元素,把事件移除
  left.addEventListener('mouseout', function() {
    left.removeEventListener('mousemove', move)
  })
},

在弹框关闭的时候:

this.$refs.imgDiv.style.transform = `scale(1)`
this.$refs.imgDiv.style.left = null
this.$refs.imgDiv.style.top = null
this.zoomVal = 1

image.png