JavaScript执行循环,但仅查看数组中最后一个元素的结果

尼古拉斯·甘多佛

我正在尝试为devtools设计一个js代码段,该代码段会在一些输入标签中自动添加一些信息。

我所做的:

var labels = [
    "navigationStart",
    "unloadEventStart",
    "unloadEventEnd"];

var newRuleXpath = "//div[@class='btn-group dropdown']/button[@class='btn btn-primary']";
var formControlClass = "form-control ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required";

String.format = function() {
      var s = arguments[0];
      for (var x = 0; x < arguments.length - 1; x++) {       
          var reg = new RegExp("\\{" + x + "\\}", "gm");             
          s = s.replace(reg, arguments[x + 1]);
      }
      return s;
  }


function getElementByXpath(path) {
  return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}

function wait(ms){
   var start = new Date().getTime();
   var end = start;
   while(end < start + ms) {
     end = new Date().getTime();
  }
}

function addRule(rule) {
        var resource = rule.startsWith("resources");

        if (resource == true){
            var regexp = String.format("<span id='customextraction-{0}'>((?:[0-9]|.)*?)</span>", rule); 
        }

        else {
            var regexp = String.format("<span id='customextraction-perftimings-{0}'>((?:[0-9]|.)*?)</span>", rule); 
        }
        
        getElementByXpath(newRuleXpath).click();

        var elems = document.getElementsByClassName(formControlClass)
    
        elems[0].value = rule
        
        elems[1].value = regexp
}

for (var i = 0; i < labels.length; i++){
    let rule = labels[i]
    addRule(rule)
    wait(500)
}

因此,代码可以正常工作,但只影响标签数组的最后一个元素。

有什么想法吗?

塞思·卢特斯克

它不仅仅影响数组中的最后一个元素。只是它影响了最后一个元素。你写

var elems = document.getElementsByClassName(formControlClass)
elems[0].value = rule    
elems[1].value = regexp

因此,每次循环迭代时,它都会抓住该组元素,并应用相同的元素(前两个,如您所指定的get[0][1]),并应用您的规则。循环的每次迭代都会覆盖最后一个,因为您每次都引用相同的DOM节点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带for循环的Javascript数组,仅返回最后一个元素

交换数组中最大和最后一个元素

Foreach循环仅返回最后一个结果

for循环生成的2维JavaScript数组被最后一个循环结果覆盖

foreach循环仅输出数组中的最后一个元素

循环仅显示最后一个数组元素ActionScript3

For循环仅迭代Python中的最后一个元素

对于仅影响数组最后一个元素的循环,我希望我的代码对数组的每个元素起作用

R: for 循环只对最后一个列表元素执行

使用grep -f,但它仅返回与列表中最后一个模式匹配的结果

循环结果数组的最后一个索引

仅获取数组猫鼬的最后一个元素

仅保存C数组的最后一个元素

函数.push继续替换与数组中最后一个元素相同的所有元素

将for循环结果添加到数组,并在最后一个循环之后显示已添加元素的总和

VBA数组循环未使用最后一个元素

在foreach循环中遍历laravel的结果时,它只保存新数组元素中的最后一个元素?

检测“ for”循环中最后一个元素的pythonic方法是什么?

将数据从一个数组复制到另一个数组会导致结果数组仅包含输入数组中最后一项的重复条目

删除元素中最后一个元素的类

循环JavaScript会跳过最后一个元素

如何查找单元格数组中最后一个非空元素的索引

为什么指向数组或向量中最后一个元素之后的内存位置?

显示js数组中最常出现的项目的最后一个元素

仅循环第一个和最后一个元素

从php中最后执行的mysqli查询中获取结果,并在另一个查询中使用结果

为什么for循环仅显示最后一个循环的结果

For循环返回最后一个结果

选择JavaScript数组中的最后一个元素