首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE8切片调用问题-- Array.prototype.slice --“这”不是Javascript对象

IE8切片调用问题-- Array.prototype.slice --“这”不是Javascript对象
EN

Stack Overflow用户
提问于 2014-08-26 14:32:36
回答 1查看 2K关注 0票数 1

这是一个比之前被问到的更复杂的问题,试图使用之前给出的答复,但它就是行不通。

这是密码

代码语言:javascript
复制
(function () {
    function init() {
        var speed = 330,
            easing = mina.backout;

       [].slice.call(document.querySelectorAll('.grid > a')).forEach(function (el) {
            var s = Snap(el.querySelector('svg')), path = s.select('path'),
                pathConfig = {
                    from: path.attr('d'),
                    to: el.getAttribute('data-path-hover')
                };

            el.addEventListener('mouseenter', function () {
                path.animate({ 'path': pathConfig.to }, speed, easing);
            });

            el.addEventListener('mouseleave', function () {
                path.animate({ 'path': pathConfig.from }, speed, easing);
            });
        });
    }

    init();

})();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-27 15:40:38

至于选择器('.grid > a')是符合CSS2的,这应该工作得很好。因为querySelectorAll 只支持css2选择器在IE8中。

此外,您不需要调用片方法,只需直接使用

代码语言:javascript
复制
   [].forEach.call(document.querySelectorAll('.grid > a'), function (el) {
        var s = Snap(el.querySelector('svg')), path = s.select('path'),
            pathConfig = {
                from: path.attr('d'),
                to: el.getAttribute('data-path-hover')
            };

        el.addEventListener('mouseenter', function () {
            path.animate({ 'path': pathConfig.to }, speed, easing);
        });

        el.addEventListener('mouseleave', function () {
            path.animate({ 'path': pathConfig.from }, speed, easing);
        });
    });

更新- [].forEachcompatible with >= IE9

代码语言:javascript
复制
var nodeArray = [].slice.call(document.querySelectorAll('.grid > a'));

for (var i = 0; i < nodeArray.length; i++) {
    var el = nodeArray[i];
    var s = Snap(el.querySelector('svg')),
        path = s.select('path'),
        pathConfig = {
            from: path.attr('d'),
            to: el.getAttribute('data-path-hover')
        };

    el.addEventListener('mouseenter', function () {
        path.animate({
            'path': pathConfig.to
        }, speed, easing);
    });

    el.addEventListener('mouseleave', function () {
        path.animate({
            'path': pathConfig.from
        }, speed, easing);
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25508461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档