Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以编程方式单击标签/收音机或火灾事件_Javascript_Jquery_Userscripts - Fatal编程技术网

Javascript 以编程方式单击标签/收音机或火灾事件

Javascript 以编程方式单击标签/收音机或火灾事件,javascript,jquery,userscripts,Javascript,Jquery,Userscripts,我正在编写一个用户脚本,将自定义javascript注入页面的头部。容易的豌豆 // ==UserScript== // @name *** (BLOCKED DUE TO NDA) // @namespace *** (BLOCKED DUE TO NDA) // @description *** (BLOCKED DUE TO NDA) // @include *** (BLOCKED DUE TO NDA) // @author Aaron K. Henderson // @v

我正在编写一个用户脚本,将自定义javascript注入页面的头部。容易的豌豆

// ==UserScript==
// @name    *** (BLOCKED DUE TO NDA)
// @namespace   *** (BLOCKED DUE TO NDA)
// @description *** (BLOCKED DUE TO NDA)
// @include *** (BLOCKED DUE TO NDA)
// @author  Aaron K. Henderson
// @version 1.0
// ==/UserScript==

var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= '***.js';
head.appendChild(script);
我注入的.js使用了页面上已经使用的jQuery来进行一些css更改以及自动化一些普通任务

$(document).ready(function() {
    // Rename Approve All Button
    $('#approve-all-button span').text('Scan + Detect');

    // The Magic
    $('#approve-all-button').click(function(i) { 
        var Current_Name = '';
        // Loop through TR
        $('tr').each(function(i) {
            if (i > 0) {

                // Get Current Username in Loop
                Current_Name = $(this).children('.username').text();
                // Apply Default Color to All (Green)
                $(this).css('background-color', '#0AFE47');
                // Apply Approved Class to All
                $(this).addClass('AddApproved');
                // Hide Creation Date / Last Login
                $(this).children('.nowrap').css('opacity','.1').css('background-color','white');
                // Get Current Username Length
                var nlen = Current_Name.length;

                // If Name Length is <= 3 or >= 15 Apply Color (Red)
                if (nlen <= 3) {
                    $(this).css('background-color','#FF7575');
                    $(this).addClass('AddDeleted');
                    $(this).removeClass('AddApproved');
                    $(this).removeClass('AddInactive');         
                }
                if (nlen >= 15) {
                    $(this).css('background-color','#FF7575');
                    $(this).addClass('AddDeleted');
                    $(this).removeClass('AddApproved'); 
                    $(this).removeClass('AddInactive'); 
                }

                var nDigits = 0;
                for ( var t=0; t<nlen; t++) {
                    var chr = Current_Name.charAt(t);
                    if (chr >= "0" && chr <= "9") nDigits++;
                }
                var charcount = nlen - nDigits;

                if ((nDigits >=6) || (charcount < 3) || (nDigits == nlen))  { 
                    $(this).css('background-color','#FF7575');
                    $(this).addClass('AddDeleted');
                    $(this).removeClass('AddApproved');
                    $(this).removeClass('AddInactive'); 
                }
            }
        });
    });
        // On Button Click, Change Background and Add/Remove class
        $('label').click(function(i) {
            var button = $(this).attr('for');
            var status =  button.substring(button.lastIndexOf('-') + 1);
            if (status == 'status_D') {
                $(this).closest('tr').css('background-color','#FF7575');
                $(this).addClass('AddDeleted');
                $(this).removeClass('AddApproved');
                $(this).removeClass('AddInactive');
            } else if (status == 'status_A') {
                $(this).closest('tr').css('background-color','#0AFE47');
                $(this).addClass('AddApproved');
                $(this).removeClass('AddInactive');
                $(this).removeClass('AddDeleted');
            } else if (status == 'status_I') {
                $(this).closest('tr').css('background-color','#0AFE47');
                $(this).addClass('AddInactive');
                $(this).removeClass('AddApproved');
                $(this).removeClass('AddDeleted');
            }

        });
});
上面的按钮代码有100次迭代。ID的每个迭代集都有一个变量,每个迭代增加1,例如

id="form-0-status_D" 
id="form-1-status_D" 
id="form-2-status_D" 
id="form-3-status_D" 
id="form-4-status_D" 
如您所见,我使用jQuery的each循环遍历页面上的每个标记,并使用某种形式的$this进行必要的更改

当标签和输入的ID为动态时,如何自动选择“删除”按钮?我如何才能真正点击“已删除”按钮

此外,为了消除任何混淆,我只需添加AddApproved/AddInactive/AddDeleted类,以便于统计

我还没有实现这个计数器,但我已经知道如何使它工作

另外,这是我第一次使用jQuery,所以这不仅是一次学习经历,也是我工作场所的一个工具。如果某些代码看起来不正确,我道歉

编辑+

我已经按照建议进行了检查和“重构”。实际上,我注意到处理所有表行的速度略有提高

另外,根据建议,我添加了一些形式的“$”form-“+I+”-status_D”。触发“click”;”我的剧本。但是,当我保存并运行脚本时,删除按钮不会在应该的时候触发。我劫持并变成扫描+检测的Approve All的默认操作仍然适用。我试着加上I;但dafault行动仍在执行

新代码:

$(document).ready(function() {
    // Rename Approve All Button
    $('#approve-all-button span').text('Scan + Detect');

    // The Magic
    $('#approve-all-button').click(function(i) {
        i.preventDefault();
        var Current_Name = '';
        // Loop through TR
        $('tr').each(function(i) {
            if (i > 0) {
                var _self = $(this)
                // Get Current Username in Loop
                Current_Name = _self.children('.username').text();
                // Apply Default Color to All (Green)
                _self.css('background-color', '#0AFE47');
                // Apply Approved Class to All
                _self.addClass('AddApproved');
                // Hide Creation Date / Last Login
                _self.children('.nowrap').css('opacity','.1').css('background-color','white');
                // Get Current Username Length
                var nlen = Current_Name.length;

                // If Name Length is <= 3 or >= 15 Apply Color (Red)
                if ((nlen <= 3) || (nlen >= 15)){
                    _self.css('background-color','#FF7575').
                        addClass('AddDeleted').
                        removeClass('AddApproved').
                        removeClass('AddInactive');
                    $(_self).children('#form-'+i+'-status_D').trigger('click');
                }


                var nDigits = 0;
                for ( var t=0; t<nlen; t++) {
                    var chr = Current_Name.charAt(t);
                    if (chr >= "0" && chr <= "9") nDigits++;
                }
                var charcount = nlen - nDigits;

                if ((nDigits >=6) || (charcount < 3) || (nDigits == nlen))  { 
                    _self.css('background-color','#FF7575').
                        addClass('AddDeleted').
                        removeClass('AddApproved').
                        removeClass('AddInactive');
                    $(_self).children('#form-'+i+'-status_D').trigger('click');
                }
            }
        });
    });
        // On Button Click, Change Background and Add/Remove class
        $('label').click(function(i) {
            var _self = $(this)
            var button = _self.attr('for');
            var status =  button.substring(button.lastIndexOf('-') + 1);
            if (status == 'status_D') {
                _self.closest('tr').css('background-color','#FF7575').
                    addClass('AddDeleted').
                    removeClass('AddApproved').
                    removeClass('AddInactive');
            } else if (status == 'status_A') {
                _self.closest('tr').css('background-color','#0AFE47').
                    addClass('AddApproved').
                    removeClass('AddInactive').
                    removeClass('AddDeleted');
            } else if (status == 'status_I') {
                _self.closest('tr').css('background-color','#0AFE47').
                    addClass('AddInactive').
                    removeClass('AddApproved').
                    removeClass('AddDeleted');
            }

        });
});
编辑++

从技术上讲,我不需要Approve All功能,这就是为什么我用自己的clickfunction{}劫持了它。我尝试添加$'Approve-All-button span'。取消绑定'click';不幸的是,在保存和刷新页面后,原来的approve all功能仍然存在。卡滞+1

编辑+++

我在那里发现了我的错误,我仍然包括我复制并粘贴的行中的span标记。当我从代码$'approve-all-button'中删除span时,取消绑定'click';不再调用原始事件。我需要弄清楚的是如何手动单击按钮,即通过编程方式。

签出。它可以让你随意地举办活动

在这种情况下,它将类似于:

$('#form-'+i+'-status_D').trigger('click');
此外,我建议进行一些重构:

// If Name Length is <= 3 or >= 15 Apply Color (Red)
if (nlen <= 3 || nlen >= 15) {
  $(this).css('background-color','#FF7575').
    addClass('AddDeleted').
    removeClass('AddApproved').
    removeClass('AddInactive');
}
正如我在你问的另一个问题上所解释的那样,触发器不起作用。另一个答案似乎是正确的,因为您只关注触发器

似乎您没有任何与单选按钮关联的JS代码。在这种情况下,我会:

$(_self).children('#form-'+i+'-status_D').prop("checked", true);

这就是你所需要的。

如果我做得不对,我向你道歉。stackoverflow的第一次用户。我是否必须在编辑问题后将其重新放到问题的第一页?通常,您应该删除任何不再适用的代码,因为很难判断实际问题是什么。如果你想得到更多的帮助,你可以对你的问题悬赏,尽管这可能是不可能的,因为你是一个新用户,或者作为一个不同的问题来问。这似乎是我想要它做的。这只是让.trigger'click'触发的问题。当我把它放在脚本中时,第一次运行该行时实际上失败了。放置一些Try/Catch提醒我此类型错误:对象没有方法“prop”,您使用的是哪个版本的jQuery?prop函数在jQuery 1.6+中可用。请考虑使用最新的jQuery
<html>
  <head>
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
    <script type="text/javascript">
      $(function() {
        $('#click-me').click(function() {
          $('label[for=test]').trigger('click');
        });
      });
    </script>
  </head>
  <body>
    <span id="click-me">Click Me</span>
    <input type="radio" id="test">
    <label for="test">Deleted</label>
  </body>
</html>
$(_self).children('#form-'+i+'-status_D').prop("checked", true);