问答

如何在数组内一个元素引用另一个元素?

作者:admin 2021-05-05 我要评论

我想将每个图标打开的次数分别存储在油猴里面,建了一个数组分别存放图标的名称、图片、链接、弹出的信息,弹出的信息是一个函数,点击图标时执行打开链接和统计...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

我想将每个图标打开的次数分别存储在油猴里面,建了一个数组分别存放图标的名称、图片、链接、弹出的信息,弹出的信息是一个函数,点击图标时执行打开链接和统计次数

我需要在函数里面引用当前的图标的名称,如何通过JavaScript实现呢?或者是否有其他的办法?

在这个脚本基础上改的划词脚本

var iconArray = [
        {
            name: 'Google',
            image: 'https://i.ibb.co/R9HMTyR/1-5.png',
            host: ['www.google.com'],
            popup: function (text, name) {
                open('https://www.google.com/s?wd=' + encodeURIComponent(text), name);
                console.log(name);
            }
        },
        {
            name: 'Bing',
            image: 'https://i.ibb.co/R9HMTyR/1-5.png',
            host: ['www.bing.com'],
            popup: function (text, name) {
                open('https://www.bing.com/s?wd=' + encodeURIComponent(text), name);
                console.log(name);
            }
        },
    ]
function open(url, a) {
         try {
             if(GM_openInTab(url, { loadInBackground: true, insert: true, setParent :true })){

                    if(GM_getValue(a).times){
                        GM_setValue(a, {
                            'times': GM_getValue(a).times + 1
                        });
                    }else{
                        GM_setValue(a, {
                            'times': 1
                        });
                    }
                    console.log('times-'+GM_getValue(a).times);

             } else{

             }
         } catch (error) {
             return GM_openInTab(url, { loadInBackground: true, insert: true, setParent :true });
         }
    }

我想在油猴里面这样存放数据,打开Google 1次,Bing 4次

{
    "Google": {
        "times": "1",
    },
    "Bing": {
        "times": "4",
    },
      
}
###

通过调用popup函数的时候传入name解决啦

###

我觉得你一个iconArray把元素对象抽象出来封装成功一个类来共享pop方法,这样开发业务更加轻便快捷,简单示例。

class Icon {
  constructor(name, text) {
    this.name = name
    this.text = text
  }

  popup() {
    open('https://www.bing.com/s?wd=' + encodeURIComponent(this.text), this.name);
    console.log(this.name)
  }
}

const iconArray = [ new Icon('Google', 'xxxx'), new Icon('Bing', 'xxxx') ]

// 后期调用
iconArray[0].popup()

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 如何在数组内一个元素引用另一个元素?

    如何在数组内一个元素引用另一个元素?

  • 求助,vue如何查看所有路由信息?

    求助,vue如何查看所有路由信息?

  • node用jwt生成token后,如何二次加密成

    node用jwt生成token后,如何二次加密成

  • 图片分组上传将返回值赋值给不同的参数

    图片分组上传将返回值赋值给不同的参数

腾讯云代理商
海外云服务器