V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
cisisustring
V2EX  ›  JavaScript

求助, javascript 屏蔽搬瓦无货脚本,添加恢复功能失效,大家帮忙看看

  •  
  •   cisisustring · 2017-10-24 14:48:09 +08:00 · 2899 次点击
    这是一个创建于 2587 天前的主题,其中的信息可能已经有所发展或是发生改变。

    要求有两点,1、屏蔽无货 已经达成 2、添加一个恢复按钮 未达成 现在的问题是按钮添加后没有功能。不知道是什么原因。 ps:在油猴 Tampermonkey 上运行

    (function() { 'use strict';

    var b = document.getElementsByTagName("em");
    var blok = new Array();
    for (var i in b) {
    	if (b[i].innerHTML == "(out of stock)") {
    		b[i].parentNode.parentNode.style.display = "none";
    		blok = blok.concat(b[i]);
    	}
    }
    alert("屏蔽成功!");
    var myMethods = {
    	showMethod: function() {
    		for (var k in blok) {
    			blok[k].style.display = "block";
    		}
    		alert("调用成功!");
    	}
    };
    var fat = document.getElementById("order-web20cart").getElementsByTagName("div")[0];
    var butt = document.createElement("input");
    butt.setAttribute("type", "button");
    butt.setAttribute("value", "显示所有");
    butt.setAttribute("onclick", 'myMethods.showMethod()');//这个 showMethod()调不出来
    fat.appendChild(butt);
    // Your code here...
    

    })();

    8 条回复    2017-10-24 18:14:04 +08:00
    jy02534655
        1
    jy02534655  
       2017-10-24 15:30:23 +08:00
    监听点击事件能这样写么?
    cisisustring
        2
    cisisustring  
    OP
       2017-10-24 15:52:27 +08:00
    @jy02534655 我自己写 testDemo 都是这样写,能点击出来。但是在油猴上就不行,不知道是不是油猴不支持
    MinonHeart
        3
    MinonHeart  
       2017-10-24 16:07:55 +08:00   ❤️ 1
    这是想显示隐藏 out of stock ?

    blok = blok.concat(b[i]); 这句错了

    改成 blok.push(b[i].parentNode.parentNode);
    Marfal
        4
    Marfal  
       2017-10-24 16:18:12 +08:00
    瓦工 HK 近期要上线了,目测要被操烂
    cisisustring
        5
    cisisustring  
    OP
       2017-10-24 16:29:09 +08:00
    @MinonHeart @jy02534655 谢谢指正。这里补上以后,setAttribute 还是不能调用 showMethod(),听从 1 楼的建议换监听点击事件后就可以,不知道为什么。
    下面是修改后的代码<br>
    (function() {
    'use strict';

    var b = document.getElementsByTagName("em");
    var blok = new Array();
    var temp=0;
    for (var i in b) {
    if (b[i].innerHTML == "(out of stock)") {
    b[i].parentNode.parentNode.parentNode.parentNode.parentNode.style.display = "none";
    blok = blok.concat(b[i].parentNode.parentNode.parentNode.parentNode.parentNode);
    }
    }
    alert("屏蔽成功!");
    var myMethods = {
    showMethod: function() {
    for (var k in blok) {
    blok[k].style.display = "block";
    }
    alert("全部显示!");
    }
    };
    var fat = document.getElementById("order-web20cart").getElementsByTagName("div")[0];
    var butt = document.createElement("input");
    butt.setAttribute("type", "button");
    butt.setAttribute("value", "显示所有");
    butt.setAttribute("id", "mybutton");//新加 id
    // butt.setAttribute("onclick", "myMethods.showMethod()");//用 setAttribute 不能成功
    fat.appendChild(butt);
    document.getElementById("mybutton").addEventListener("click",myMethods.showMethod);//绑定事件监听成功执行
    // Your code here...
    })();
    jy02534655
        6
    jy02534655  
       2017-10-24 16:40:05 +08:00   ❤️ 1
    @cisisustring 应该是兼容问题,js 常见坑
    cisisustring
        7
    cisisustring  
    OP
       2017-10-24 16:48:00 +08:00 via Android
    @jy02534655 目前是这个样子,能用就行。
    feast
        8
    feast  
       2017-10-24 18:14:04 +08:00
    @Marfal GFW 表示密切关注 IP,到时候全部 BLOCK
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   900 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:57 · PVG 05:57 · LAX 13:57 · JFK 16:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.