div设置为contenteditable=”true”,怎么通过自定义button删除键,删除光标前的一个字符?

此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于www.yzc577.com的点点滴滴

1.下面的这段代码只在 textarea input下有效,关于div标签contenteditable=”true” 没有效

     $.fn.extend{
            /*
             * 获取光标地点地位
             */
            iGetFieldPos: function  {
                var field = this.get0;
                if document.selection {
                    //IE
                    $this.focus;
                    var sel = document.selection;
                    var range = sel.createRange;
                    var dupRange = range.duplicate;
                    dupRange.moveToElementTextfield;
                    dupRange.setEndPointEndToEnd, range;
                    field.selectionStart = dupRange.text.length - range.text.length;
                    field.selectionEnd = field.selectionStart + range.text.length;
                }
                return field.selectionStart;
            },
            /*
             * 选中指定地位内字符 || 设置光标地位
             * --- 从start起选中含第start个,到第end终了(不含第end个)
             * --- 若不输入end值,即为设置光标的地位(第start字符后)
             */
            iSelectField: function start, end {
                var field = this.get0;
                //end未定义,则为设置光标地位
                if arguments[1] == undefined {
                    end = start;
                }
                if document.selection {
                    //IE
                    var range = field.createTextRange;
                    range.moveEndcharacter, -$this.val.length;
                    range.moveEndcharacter, end;
                    range.moveStartcharacter, start;
                    range.select;
                } else {
                    //非IE
                    field.setSelectionRangestart, end;
                    $this.focus;
                }
            },
            /*
             * 选中指定字符串
             */
            iSelectStr: function str {
                var field = this.get0;
                var i = $this.val.indexOfstr;
                i != -1 ? $this.iSelectFieldi, i + str.length : false;
            },
            /*
             * 在光标之后拔出字符串
             */
            iAddField: function str {
                var field = this.get0;
                var v = $this.val;
                var len = $this.val.length;
                if document.selection {
                    //IE
                    $this.focus;
                    document.selection.createRange.text = str;
                } else {
                    //非IE
                    var selPos = field.selectionStart;
                    $this.val$this.val.slice0, field.selectionStart + str + $this.val.slicefield.selectionStart, len;
                    this.iSelectFieldselPos + str.length;
                };
            },
            /*
             * 删除光标后面-或许后面+的n个字符
             */
            iDelField: function n {
                var field = this.get0;
                var pos = $this.iGetFieldPos;
                var v = $this.val;
                //大于0则删除后面,小于0则删除后面
                $this.valn > 0 ? v.slice0, pos - n + v.slicepos : v.slice0, pos + v.slicepos - n;
                $this.iSelectFieldpos - n < 0 ? 0 : n;
            }
        };
    }jQuery;

http://zhidao.baidu.com/quest… 网上找的一个获取地位的。
然后你每次都截取内容。substr

(看完/读完)这篇文章有何感想! 来看看www.yzc577.com是怎么评论的吧!

json 十六进制被转换为字符串

此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于yzc577亚洲城亚洲娱乐第一站的点点滴滴

var cmd = ["0x02,0x03,0xB4,0xB4,0x00,0x06","0x00,0x02,0x6E,0x00,0x00,0x05","0x01,0x01,0x00,0x78,0x00,0x05","0x03,0x03,0x82,0x96,0x00,0x05"];
var cmd1=[0x02, 0x03, 0xB4, 0xB4, 0xFF, 0xFF,0x02, 0x03, 0xB4, 0xB4, 0x00, 0x06,0x00, 0x02, 0x6E, 0x00, 0x00, 0x05,0x01, 0x01, 0x00, 0x78, 0x00, 0x05,0x03, 0x03, 0x82, 0x96, 0x00, 0x05];
var test =["0x02,0x03,0xB4,0xB4,0x00,0x06","0x00,0x02,0x6E,0x00,0x00,0x05","0x01,0x01,0x00,0x78,0x00,0x05","0x03,0x03,0x82,0x96,0x00,0x05"];
var cloud = [0x02, 0x03, 0xB4, 0xB4, 0xFF, 0xFF,
    0x02, 0x03, 0xB4, 0xB4, 0x00, 0x06,
    0x00, 0x02, 0x6E, 0x00, 0x00, 0x05,
    0x01, 0x01, 0x00, 0x78, 0x00, 0x05,
    0x03, 0x03, 0x82, 0x96, 0x00, 0x05
];

代码如上

cmd 是经过PHP 转换失掉的16进制编码但是JS 取到的时分曾经变成了字符串
想完成将cmd 变成跟cmd1 一样的十六进制 截图蓝色部分为想要的结果 白色是数据内容

cmd.join.split,.mapfunctionv {return parseIntv,16;};

JSON.stringify
括号里写变量

cmd.join.split,.mapfunctionv {return parseIntv;};

var cmd = ["0x02,0x03,0xB4,0xB4,0x00,0x06","0x00,0x02,0x6E,0x00,0x00,0x05","0x01,0x01,0x00,0x78,0x00,0x05","0x03,0x03,0x82,0x96,0x00,0x05"];
var cmd1 = [];
// 转换为整数数组
cmd.forEachfunctiond{
    d.split",".forEachfunctiond{
        cmd1.pushparseIntd;
    }
};

// 打印输入16进制款式字符串
var output = "var cmd1=[";
cmd1.forEachfunctiond,i{
    var _u = d.toString16.toUpperCase;
    output += "0x"+ _u.length<2 ? "0"+_u : _u;
    ifi!=cmd1.length-1 output+=",";
};
output += "]";
// 输入字符串:var cmd1=[0x02,0x03,0xB4,0xB4,0x00,0x06,0x00,0x02,0x6E,0x00,0x00,0x05,0x01,0x01,0x00,0x78,0x00,0x05,0x03,0x03,0x82,0x96,0x00,0x05]
console.logoutput;

(看完/读完)这篇文章有何感想! 来看看yzc577亚洲城亚洲娱乐第一站是怎么评论的吧!

ios canvas读取照片时,图片旋转90度

此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于yzc577亚洲城娱乐的点点滴滴

用exif js 前往的orientation 满是 6, 无法判别啊.. 怎样处理这种题目?

css3的 transform rotate 试一下图片旋转90度

(看完/读完)这篇文章有何感想! 来看看yzc577亚洲城娱乐是怎么评论的吧!

yzc577亚洲城亚洲娱乐第一站使用CRtmpServer做视频服务端总是出现Server Not Found?

此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于yzc577亚洲城亚洲娱乐第一站的点点滴滴

在运用CRtmpServer做效力真个时分 测试用JWplayer播放flv文件的视频,总是表现Server Not Found: rtmpt: ip:80/flvplayback… 不知道为什么= =
是用的是老些版本的JWplayer由于新版的也不行
偶然分会呈现 Server Not Found: rtmp://ip/flvplayback/…

代码是

<html>
<body>
<script type=text/javascript src=swfobject.js></script>

<div id=mediaspace>This text will be replaced</div>

<script type=text/javascript>
  var so = new SWFObjectplayer.swf,mpl,640,360,9;
  so.addParamallowfullscreen,true;
  so.addParamallowscriptaccess,always;
  so.addParamwmode,opaque;
  so.addVariablefile,/media/file;
  so.addVariablestreamer,rtmp://ip/flvplayback/;
  so.writemediaspace;
</script>
</body>
</html>

我知道处理办法了…
./crtmpserver/crtmpserver crtmpserver/crtmpserver.lua
实行这条下令之后ssh的窗口不要关…
要关的话需求screen下令让次序背景持续运转
Im so stupid.
盼望对以后的人有帮忙0.0

(看完/读完)这篇文章有何感想! 来看看yzc577亚洲城亚洲娱乐第一站是怎么评论的吧!

如何解决chrome的devtool打开iframe.contentWindow就崩溃?

此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于yzc577亚洲城娱乐的点点滴滴

有一个iframe想看他的属性

<iframe name=iframe0 src=xxx.html></iframe>
console.logiframe0;

如许控制台会表现一个东西,但只需点击左边的箭头翻开细致信息就会弹出窗口说devtool崩了,为什么?以及怎样处理?

零碎配置:
MAC OS X EL Capitan
chrome 53.0

(看完/读完)这篇文章有何感想! 来看看yzc577亚洲城娱乐是怎么评论的吧!

跨域请求的问题

此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于www.yzc577.com的点点滴滴

我前真个代码是如许,
背景是用php写的,

<?php
class IBaseAction extends Action
{   
public $params = array;// 统统央求的参数
    public $return = arrayreturnCode =>200, returnDesc => success; // 前往的根底数据
    function __construct
    {
        $this->return[serverTime] =time;
        Log::record传入的参数: . var_export$_REQUEST, true,Log::DEBUG;
        $this->params = @json_decodebase64_decodeIpost.params,true,true;
        if !$this->params{
            $this->return[returnCode] =100;
            $this->return[returnDesc] = sign failed!;
            $this->responseJson;
        }else ifCKEY!=$this->params[key]{
            $this->return[returnCode] =100;
            $this->return[returnDesc] = sign failed!;
            $this->return[returnAlert] = 密钥不精确!;
            $this->responseJson;
        }
    }

    /*
     * 反省接口传入的方法
     */
    public function checkPublicParams$interfaces {
        $pass = false;
        $this->return[returnCode] = 100;
        if !Ipost. {
            $this->return[returnDesc] = 央求方法错误;
        } else if !Ipost.method || !Ipost.params {
            $this->return[returnDesc] = 接口参数错误;
        } else if !array_key_existsIpost.method, $interfaces {
            $this->return[returnDesc] = 接口名错误;
        } else {
            $this->return[returnCode] = 200;
            $pass = true;
        }
        return $pass;
    }
    protected function responseJson
    {
        exitjson_encode$this->return;
    }
}

未改的形状是前往 认证失败
“{“returnCode”:100,”returnDesc”:”sign failed!”,”serverTime”:1476799012}”
在网上也找到了修正的办法

但是不知怎样修正

关于 OPTIONS 央求,前往的 HTTP 照应应该包括以下信息:

1.允许跨域央求的办法

Access-Control-Allow-Methods: GET,POST

2.允许跨域央求的自定义头部

如 AJAX 央求

Access-Control-Allow-Headers: X-Requested-With

3.允许跨域央求的源

Access-Control-Allow-Origin: *

细致可以参考:

http://www.ruanyifeng.com/blo…

(看完/读完)这篇文章有何感想! 来看看www.yzc577.com是怎么评论的吧!

js如何在方法function()里面给全局变量赋值,然后 其他方法可用

此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于yzc577亚洲城娱乐的点点滴滴

想不到前端,小小题目都怎样难处理…..

<script>


        var recoder_time="111";

        function startrecoder {

        recoder_time = new Date.getTime.toString;
            console.log"redfdf:", recoder_time;
            AndroidNative.startRecorderrecoder_time;


        }

        function playrecoder {
            console.log"redfdf:", recoder_time;
            AndroidNative.playRecordrecoder_time;
        }

</script>

如上代码:我是先经过button点击 第一个办法,,天生一个recoder_time,情愿是这里赋值给全局变量,但是第二个办法,无法获取,不断是“111”,也便是说,第一个办法无法 给 全局变量赋值。

问:怎样才干抵达目标。。。

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

其后,我测试中得知:我每点击任何一个botton,<script></script>都市从上到下运转一次,也便是说,固然,第一个办法赋值了,但是,当点击第二个办法时分,var recoder_time=”111″;这里又初始化了,怎样搞?

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

<!DOCTYPE html>
<html lang="en">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>手机网页灌音</title>
    <script type="text/javascript" src="js/bower_components/jquery/dist/jquery.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
    <div>
        <button id="recorder" onclick="startrecoder">末尾灌音</button>
    </div>
    <br>
    <div>
        <button id="stopbtn" onclick="stoprecoder">中断灌音</button>
    </div>
    <br>

    <div>
        <button id="playbtn" onclick="playrecoder">播放</button>
    </div>
    <br>

    <div>
        <button id="stopplaybtn" onclick="stopplay">中断播放</button>
    </div>
    <br>

    <div>
        <button id="surebtn">确定</button>
    </div>
</form>
</body>

<script>

    console.log"0000000000";
        var recoder_time="1111";

        function startrecoder {

            recoder_time = new Date.getTime.toString;
            console.log"redfdf:", recoder_time;
            AndroidNative.startRecorderrecoder_time;


        }

        function playrecoder {
            console.log"redfdf:", recoder_time;
            AndroidNative.playRecordrecoder_time;
        }

        //中断
        function stoprecoder {
            AndroidNative.stopRecorder;
        }

        //
        function showtoasttost {
            AndroidNative.showToasttost;

        }

</script>


</html>

假如在你这个代码的作用域内应该是可以的。
你的第二个办法在什么时分调用呢?一定要在第一个办法调用之后才才干取到值。
你的第二个办法也经过一个button点击调用尝尝呢

代码看起来是没有什么题目
但是可以是你其他代码块对这段代码有影响,你不妨注释失多余的代码看看

<!DOCTYPE html>
<html lang="en">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>手机网页灌音</title>
    <script type="text/javascript" src="js/bower_components/jquery/dist/jquery.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
    <div>
        <button id="recorder" onclick="startrecoder">末尾灌音</button>
    </div>
    <br>
    <div>
        <button id="stopbtn" onclick="stoprecoder">中断灌音</button>
    </div>
    <br>

    <div>
        <button id="playbtn" onclick="playrecoder">播放</button>
    </div>
    <br>

    <div>
        <button id="stopplaybtn" onclick="stopplay">中断播放</button>
    </div>
    <br>

    <div>
        <button id="surebtn">确定</button>
    </div>
</form>
</body>

<script>

    console.log"0000000000";
        var recoder_time="1111";

        function startrecoder {

            recoder_time = new Date.getTime.toString;
            console.log"redfdf:", recoder_time;
            // AndroidNative.startRecorderrecoder_time;
            return false

        }

        function playrecoder {
            console.log"redfdf:", recoder_time;
            // AndroidNative.playRecordrecoder_time;
            return false 
        }

        //中断
        function stoprecoder {
            AndroidNative.stopRecorder;
        }

        //
        function showtoasttost {
            AndroidNative.showToasttost;

        }

</script>


</html>

这种调用 手机服从的 很有可以是异步的

(看完/读完)这篇文章有何感想! 来看看yzc577亚洲城娱乐是怎么评论的吧!

www.yzc577.comwebstrom配置babel一直报错

此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于www.yzc577.com的点点滴滴

起首在webstorm的file watcher中添加babel,配置如下:

之后在src目次下树立一个JS文件,报如下错误:

21:13:02 An exception occurred while executing watcher Babel. Watcher has been disabled. Fix it.: Cannot run program "cmd.exe" in directory "D:\WebStorm_workspace\Study-ES6\src\static": CreateProcess error=2, 零碎找不到指定的文件。

而在下令行中断babel操纵都是可以的,如下图:

讨教这是为什么?

别的这里另有一个题目,我的babel-preset-es2015和babel-cli都没有中断全局安装为了可移植性,都是安装在项目根目次下的,如许形成了一个题目,由于要中断下令行操纵,我直接在项目目次下是不行的,由于根本就没有babel.cmd这个文件,以是我把node_modules/.bin目次下的babel.cmd文件复制了一份到项目根目次下,并将里面的"%~dp0\..\babel-cli\bin\babel.js" %*改为了"%~dp0\node_modules\babel-cli\bin\babel.js" %*,如许才干确保在项目根目次下能实行babel下令,假如不如许,那么我要切换到node_modules/.bin目次下才干实行babel下令。我总以为这里怪怪的,是不是姿态没对,还望大家辅导辅导

另附项目构造如下:

——————————————-来结贴了————————————–

翻遍了google,在webstorm的官方论坛里也搜刮遍了,都没有找到答案,最后是这么处理的:

由于我们知道,webstorm他也是用下令行去实行babel下令,之前我发明webstorm的terminal打休会报错,但是没有太留意,我只是把这个错误记录了上去,放到阅读器里面开了一个google标签页,就没有管了,由于不断在想babel的题目,心想之后再来处理(真实是由于我先大约搜刮了一下没有找到答案)。

在2,3个小时的搜刮无解后,我末尾想,应该和这个有很大的干系,于是持续搜刮,还是无解,想着直接提issue了,但是复兴可以要等几天,忽然发明,我的webstorm是2016.1版本,他不断提示我更新,会不会和这个有干系,于是乎立马更新,然后破解,翻开了发明terminal正常了。。。

然后操纵和过去完全如出一辙,这次babel就能用了,这也印证了之前的结论,”webstorm他也是用下令行去实行babel下令”,以是你必需确保它的terminal能正常运用。OK,忙活了2,3个小时也算是处理了题目,没有白费。附上截图已斧精确:

并且真实之前的报错说得很明白了,”Cannot run program “cmd.exe”,真实便是在提示找不到下令行终端,但是事前我以为他这里的cmd指的是babel.cmd。。。,如今想想真是坑

别的在处理进程中我发明网上大部分配置文章都是你抄我我抄你,这里贴下官方的阐明吧。

webstorm配置babel步伐及参数

webstorm的terminal怎样配置

(看完/读完)这篇文章有何感想! 来看看www.yzc577.com是怎么评论的吧!

www.yzc577.comjs区分来源渠道

此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于www.yzc577.com的点点滴滴

想写个区分源头渠道的办法
根本上经过document.referral来判别

假如理解点谷歌统计或许营销的就知道他们有个utm属性
加在链接后面,比如http://aa.bb.com?utm_source=w…

然后就发明白一个题目
从微信,微博手机app,点击加了链接的参数,代码是抓不到的。
求解,也转过义了 还是没用

location.search

document.referral去路地点判别真实也可以

关于你提的题目“从微信,微博手机app,点击加了链接的参数,代码是抓不到的。”,js按常理是可以获取到url地点的,如:

window.location.href

获取整个url地点信息,你用表达式对url地点取参,这个应该可行!详细微信,微博手机app,能否真可以自己没有实操过,但是关于js来说,这些是应该不会影响

(看完/读完)这篇文章有何感想! 来看看www.yzc577.com是怎么评论的吧!

for循环经典闭包问题的衍生题

此文章不得转载,如有需要请联系网站管理员。

一度的温暖,一百度的爱情,来自于www.yzc577.com的点点滴滴

    <ul>
        <li>0</li>
        <li>1</li>
        <li>2</li>
        <li>3</li>
    </ul>
var nodeList = document.getElementsByTagNameli;

forvar i = 0;i < nodeList.length;i++{        
    nodeList[i].onclick = function{            
        console.logi;
    }
}
这里每个li的onclick触发后 都市输入4 ,由于console.logi只是对i变量的援用

假如改成一下代码:
forvar i = 0;i < nodeList.length;i++{
    nodeList[i].num = i;
    nodeList[i].onclick = function{            
        console.logthis.num;
    }
}

可以正常输入0,1,2,3  猜测缘由是在为li创立onclick事变的同时创立属性num
以是num和onclick都是属于li的一部分,那么再变革一下代码

forvar i = 0;i < nodeList.length;i++{
    var num = i;
    nodeList[i].onclick = function{            
        console.lognum;
    }
}

这里仍然会输入4,假如说是由于援用了num,而num又援用了i 
那么,为什么以nodeList[i].num = i 的可行? 
为li创立了属性num的同时 
nodeList[i].num = i 算是对i的援用还是赋值?

你如许的学习办法真的太可骇啦!.

闭包会都输入4的缘由是, 函数定义时并不实行.

var nodeList = document.getElementsByTagNameli;

forvar i = 0;i < nodeList.length;i++{        
    nodeList[i].onclick = function{            
        console.logi;
    }
}

之以是输入的全部是3, 是由于li绑定的事变处理函数在定义时并未实行, 当你触发li的点击事变时函数实行, 此时的i是3,固然会输入3.

forvar i = 0;i < nodeList.length;i++{
    nodeList[i].num = i;
    nodeList[i].onclick = function{            
        console.logthis.num;
    }
}

为li添加一个属性, 为num属性赋值是在什么时分发作的? 他并没有放到函数里, 以是这个语句直接就实行啦. 此时i就辨别为0,1,2,3, 等事变处理函数实行的时分, 输入的是对应li的num值, 而这个时分的num曾经在上一步就为其赋值啦. 固然会输入0,1,2,3

forvar i = 0;i < nodeList.length;i++{
    var num = i;
    nodeList[i].onclick = function{            
        console.lognum;
    }
}

这个是由于, num变量被粉饰笼罩了值.
假定代码改成如许:

var num;
forvar i = 0;i < nodeList.length;i++{
    ifi === 1 {
        num = i;
    }
    nodeList[i].onclick = function{            
        console.lognum;
    }
}

你说他会输入什么?

我说的学习办法可骇, 是你不好都雅书, 理解他的真义. 就如许钻这些牛角尖. 是会误事出事儿的.

风趣的题目,我来答复参考一下。

var nodeList = document.getElementsByTagNameli;

forvar i = 0;i < nodeList.length;i++{        
    nodeList[i].onclick = function{            
        console.logi;
    }
}

第一个代码一定会是4,缘由是console.log在实行时,并不会记取在进程中的i值。
onclick后面指的是个回调函式,以是相便是下面更明白的改写:

var nodeList = document.getElementsByTagNameli;

var i; //独立出来

function output{  //独立出来          
   console.logi; 
}

fori = 0; i < nodeList.length; i++{        
    nodeList[i].onclick = output;
}

为何要把var i;独立出来,由于在这里for中所宣告的i,相称于在全域中宣告。另一个console.log也是,它是个回调函式,没实行没按下去触发不会呼唤的。以是当console.log真正被实行时,这个时分i老早就颠末跳出for语句,变成了4。


第二例是如许:

forvar i = 0;i < nodeList.length;i++{
    nodeList[i].num = i;
    nodeList[i].onclick = function{            
        console.logthis.num;
    }
}

这回改用nodeList[i].num属性先接好每次for运算的i值,相称有效,然后也知道要用this值传给console.log作输入。

我假定你知道了几件事:

  1. 你知道getElementsByTagName的回传是什么,也便是如下面所看起来你用了像阵列的用法如许。

  2. nodeList[i].num如许的用法,是在物件中新增属性

  3. console.logthis.num,这边的this是代表什么意思,东西是谁

你的猜测是精确的: 猜测缘由是在为li创立onclick事变的同时创立属性num,以是num和onclick都是属于li的一部分。


来看第三个例,最后再阐明我的见解。

forvar i = 0;i < nodeList.length;i++{
    var num = i;
    nodeList[i].onclick = function{            
        console.lognum;
    }
}

在第三例中,你会以为var num的结果会和第二例的nodeList[i].numthis.num的用法分歧,以是如许用。实际上并没有,它与和第一例是一样的。

以是我也猜测你可以在第二例中,不知道在作什么,以是我以下要阐明一下。

  • 什么时分是援用,什么时分是赋值?

num = i;var i = 0这个叫赋值,nodeList[i].num = i;这个也叫赋值,JavaScript根本上看到等号=的都是值转达。只要几种情况会看到所谓的”援用”参照,第二例有个,便是this援用指向到元素物件。

然后console.log只是个函式,你当下给他什么值作为传参,他就输入在控制台中,就如许,没什么引不援用。

  • 你用了很多不好的语法

第一个是,nodeList[i].num = i;便是个,nodeList[i]的确是个物件,但原先没有的东西你生了一个给他,这个作法不是很好,也没见人如许用的。元素Element的话可以加上data-扫尾之类的属性,有API可套用,不过这是HTML5的标准。你这里应该是NodeList与Node物件,细致要看API阐明。

第二个是你在for语句里宣告var num = i;,for语句里不就实行4次就宣告4次?我固然知道js引擎都市优化,以是这是个不好的语法。要不就写到forvar i = 0, num = 0;...,要不然就先在for语句里面宣告。

  • 接著我要阐明怎样改进你的代码,让它可以抵达你想要的,以下是几个典范:

第一种: 用bind发生新函式,然后指定给onclick:

forvar i = 0;i < nodeList.length;i++{    
    nodeList[i].onclick = functiona{            
            console.loga
    }.bindnull, i
}

第二种:用IIFE,然后回传新函式:

forvar i = 0;i < nodeList.length;i++{
    nodeList[i].onclick = functiona{
      return function{
        console.loga
      }
    }i
}

下面两例用的技艺类似,真实都先锁住console.log只能输入什么了。差未几如许,搞得太宏大可以又有太多疑问。

(看完/读完)这篇文章有何感想! 来看看www.yzc577.com是怎么评论的吧!