为了账号安全,请及时绑定邮箱和手机立即绑定

JS基础(零散)踩坑之路持续更新中。。。

标签:
JavaScript
iframe对象

1.父级页面获取iframe页面中的元素对象(关键contentWindow):

document.getElementById(iframe的id).contentWindow.document.getElementById(iframe页面元素id)

2.iframe页面获取父级页面的元素对象(关键window.parent):

window.parent.document.getElementById(父级页面的元素id)
js touchstart touchend监听滑动
$('#recordList li').on('touchstart', function(e){ 
    startX = e.originalEvent.changedTouches[0].pageX, 
    startY = e.originalEvent.changedTouches[0].pageY;
 });

$('#recordList li').on('touchmove',function(e){
    //获取滑动屏幕时的X,Y
    endX = e.originalEvent.changedTouches[0].pageX,
    endY = e.originalEvent.changedTouches[0].pageY;
    //获取滑动距离
    distanceX = endX-startX;
    distanceY = endY-startY;
    //判断滑动方向
    if(Math.abs(distanceX)>Math.abs(distanceY) && distanceX>0){
        console.log('往右滑动');
    }else if(Math.abs(distanceX)>Math.abs(distanceY) && distanceX<0){
        console.log('往左滑动');
    }else if(Math.abs(distanceX)<Math.abs(distanceY) && distanceY<0){
        console.log('往上滑动');
    }else if(Math.abs(distanceX)<Math.abs(distanceY) && distanceY>0){
        console.log('往下滑动');
    }else{
        console.log('点击未滑动');
    }

});
JS传递参数

js所有函数中的参数都是按值传递的,也就是说,将函数外部的值复制给函数内部的参数。

  1. 向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(即arguments对象中的一个元素)
  2. 在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的值会反映在函数外部。
// 传递基本类型的值
function add(num) {
    num += 10;
    return num;
}    
var count = 20;
var result = addTen(count);
console.log(count)  // 20
console.log(result)  // 30

函数参数使用对象,按值传递,但是会按引用类型来访问同一对象

function setName(obj) {
    obj.name = 'bear_new';    
}
var person = new Object();
setName(person);    // 函数内的参数obj变化,函数外部的person也会发生改变,obj和person引用同一对象,指向的对象在堆内存中只有一个,而且是全局对象
alert(person.name);    // 'bear_new'

给函数参数对象重新赋值

var person = new Object();
setName(person);
alert(person.name);   // 'bear_new'

function setName() {
    obj.name = 'bear_new';
    obj = new Object();   // 此时给obj重新赋值新变量,将obj变成了局部对象,即使修改,原始的引用仍然保持未变,并且局部对象会在函数执行完后立即被销毁
    obj.name = 'Greg';
}
js对象深拷贝
function deepCopy(source) { 
    var result={};
    for (var key in source) {
          result[key] = typeof source[key]==='object'? deepCopy(source[key]): source[key];
       } 
       return result; 
}
h5 contenteditable属性 focus方法
var p = document.getElementById('contentEditableElementId'),
    s = window.getSelection(),
    r = document.createRange();
r.setStart(p, 0);
r.setEnd(p, 0);
s.removeAllRanges();
s.addRange(r);
对图片进行等比例缩放居中(解决图片固定宽高导致的图片变形体验不佳)
var $img = $('#upload');
var imgtemp = new Image();//创建一个image对象
    if ( $img.attr('src')!==undefined ) {
        imgtemp.src = $img.attr('src')
        imgtemp.onload = function(){//图片加载完成后执行
        realWidth = this.width;
        realHeight = this.height;
        autoSizeImg($img,realWidth,realHeight, 65, 60);
    }
/*
* 图片等比例缩放并居中
* w:原图真实宽度 h:原图真实高度
* maxWidth: 需要缩放的realWidth,宽度 maxHeight: 需要缩放的高度
*/
function autoSizeImg( $img, w, h, maxWidth, maxHeight){
      var Ratio = 1; //图片缩放比例
      var wRatio = maxWidth/w; //图片横向缩放比例
      var hRatio = maxHeight/h; //图片纵向缩放比例
                wRatio>hRatio ? Ratio = wRatio : Ratio = hRatio;
                $img.width(w*Ratio);
        $img.height(h*Ratio);

        if(w*Ratio > maxWidth){
            var left = -(w*Ratio-maxWidth)/2 + 'px';
            $img.css('margin-left', left)
        }
        if(h*Ratio > maxHeight){
            var top = -(h*Ratio-maxHeight)/2 + 'px';
            $img.css('margin-top', top)
        }
    }
excel表格导出
<html>
<head>
<script type="text/javascript" language="javascript">
        var idTmr;
        function  getExplorer() {
            var explorer = window.navigator.userAgent ;
            //ie 
            if (explorer.indexOf("MSIE") >= 0) {
                return 'ie';
            }
            //firefox 
            else if (explorer.indexOf("Firefox") >= 0) {
                return 'Firefox';
            }
            //Chrome
            else if(explorer.indexOf("Chrome") >= 0){
                return 'Chrome';
            }
            //Opera
            else if(explorer.indexOf("Opera") >= 0){
                return 'Opera';
            }
            //Safari
            else if(explorer.indexOf("Safari") >= 0){
                return 'Safari';
            }
        }
        function method1(tableid) {//整个表格拷贝到EXCEL中
            if(getExplorer()=='ie')
            {
                var curTbl = document.getElementById(tableid);
                var oXL = new ActiveXObject("Excel.Application");

                //创建AX对象excel 
                var oWB = oXL.Workbooks.Add();
                //获取workbook对象 
                var xlsheet = oWB.Worksheets(1);
                //激活当前sheet 
                var sel = document.body.createTextRange();
                sel.moveToElementText(curTbl);
                //把表格中的内容移到TextRange中 
                sel.select;
                //全选TextRange中内容 
                sel.execCommand("Copy");
                //复制TextRange中内容  
                xlsheet.Paste();
                //粘贴到活动的EXCEL中       
                oXL.Visible = true;
                //设置excel可见属性

                try {
                    var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
                } catch (e) {
                    print("Nested catch caught " + e);
                } finally {
                    oWB.SaveAs(fname);

                    oWB.Close(savechanges = false);
                    //xls.visible = false;
                    oXL.Quit();
                    oXL = null;
                    //结束excel进程,退出完成
                    //window.setInterval("Cleanup();",1);
                    idTmr = window.setInterval("Cleanup();", 1);

                }

            }
            else
            {
                tableToExcel('ta')
            }
        }
        function Cleanup() {
            window.clearInterval(idTmr);
            CollectGarbage();
        }
        var tableToExcel = (function() {
              var uri = 'data:application/vnd.ms-excel;base64,',
              template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
                base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) },
                format = function(s, c) {
                    return s.replace(/{(\w+)}/g,
                    function(m, p) { return c[p]; }) }
                return function(table, name) {
                if (!table.nodeType) table = document.getElementById(table)
                var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
                window.location.href = uri + base64(format(template, ctx))
              }
            })()
    </script>

</head>
<body>
<table id="ta">
  <tr>
    <td>1</td><td>admin</td>
    <td>23</td><td>程序员</td>
    <td>天津</td><td>admin@kali.com</td>
  </tr>
  <tr>
    <td>2</td><td>guest</td>
    <td>23</td><td>测试员</td>
    <td>北京</td><td>guest@kali.com</td>
  </tr>
</table>
<input id="Button1" type="button" value="导出EXCEL" 
        onclick="javascript:method1('ta')" />
</body>
</html>
点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消