javascript - html5中的video的muted属性代码能不能这么写?想优雅点没生效啊!!
PHP中文网
PHP中文网 2017-04-11 12:16:12
[JavaScript讨论组]

先贴上起作用的代码,然后第二段代码是弄成传参数的方法却不生效,请问该怎么写?

    muted.addEventListener('click', function () {
        if (video.muted != true) {
            video.muted = true;
        } else {
            video.muted = false;
        }
    });
    
    loop.addEventListener('click', function () {
        if (video.loop != true) {
            video.loop = true;
        } else {
            video.loop = false;
        }
    });

上面这段代码运行正常
下面这段没有起作用,谁能教一下怎么写?


    muted.addEventListener('click', mulo(muted));
    loop.addEventListener('click', mulo(loop));
    
    function mulo($ccc) {
        if (video.$ccc != true) {
            video.$ccc = true;
        } else {
            video.$ccc = false;
        }
    }
PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
怪我咯
// 大概可以这么写
muted.addEventListener('click', mulo.bind(null, 'muted'));
loop.addEventListener('click', mulo.bind(null, 'loop'));

function mulo($ccc) {
  video[$ccc] = ! video[$ccc];
}

解释:

  1. mulo() 会直接调用方法,所以需要使用bind

  2. js里访问属性如果是变量,只能使用jsObj[attr]这种方式,不能使用.

另外建议的方法是给dom加上data-name="muted"属性,然后用下面的代码

// 大概可以这么写
muted.addEventListener('click', mulo);
loop.addEventListener('click', mulo);

function mulo() {
  var $ccc = this.dataset.name;
  video[$ccc] = ! video[$ccc];
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号