我该怎么做,以便它首先在for循环中检查特定元素?

时间:2019-02-28 13:15:24

标签: javascript

使用for循环,我如何使它检查元素(工作2),然后检查元素1是否为空?

目前,此代码先检查第一个元素,然后检查第二个元素,依此类推。 我想做的是首先确定其他元素的优先级。在这种情况下,“工作2”元素。

<td><g:link action="show" params="${bean.getPK()}"><f:display bean="${bean}" property="${p.property}" displayStyle="${displayStyle?:'table'}" theme="${theme}"/></g:link></td>
paras = Array.from(document.querySelectorAll('.working1,.working2'));
let partnumber = 0
for(const para of paras) {
  partnumber++
  if(para.innerHTML === '') {
     para.innerHTML = partnumber;
  }
}

实际结果-检查元素(工作1)是否为空,否则检查元素(工作2)。 预期结果-检查元素(工作2)是否为空,否则检查元素(工作1)。

3 个答案:

答案 0 :(得分:0)

您可以分别创建“ .working2”和“ .working1”数组,然后通过首先添加.working2项来合并它们:

var working1 = Array.from(document.querySelectorAll('.working1'));
var working2 = Array.from(document.querySelectorAll('.working2'));

var paras = working2.concat(working1);
let partnumber = 0
for(const para of paras) {
  partnumber++
  if(para.innerHTML === '') {
     para.innerHTML = partnumber;
  }
}

答案 1 :(得分:0)

只需对数组中working2个元素之前的working1个元素进行排序:

const paras1 = Array.from(document.querySelectorAll('.working1'));
const paras2 = Array.from(document.querySelectorAll('.working2'));
const paras = paras2.concat(paras1);
let partnumber = 0
for(const para of paras) {
  partnumber++
  if(para.innerHTML === '') {
     para.innerHTML = partnumber;
  }
}
p {
  border: 1px solid #d8d8d8;
}
<p id="machine1" class="working1"></p>
<p id="machine2" class="working1"></p>
<p id="machine3" class="working1"></p>
<p id="machine4" class="working1"></p>
<p id="machine5" class="working2"></p>
<p id="machine6" class="working2"></p>
<p id="machine7" class="working2"></p>
<p id="machine8" class="working2"></p>

答案 2 :(得分:0)

为了根据特定类别(在本例中为类名)对其进行排序,我们必须首先定义排序顺序,然后根据该排序对paras进行排序-

//sort order, this can be helpful if you have multiple classes
let sortOrder = ['working2', 'working1'];
let sortedParas = [];
let paras = Array.from(document.querySelectorAll('.working1,.working2'));

sortOrder.forEach(order => {
    paras.forEach(para => {
      if(para.classList.contains(order)){
                sortedParas.push(para);
      }
    });
});

let partnumber = 0;
for (const para of sortedParas) {
    partnumber++
    if (para.innerHTML === '') {
        para.innerHTML = partnumber;
    }
};

现场直播-https://jsitor.com/_rjxnZCHs