QuerySelectorAll样式颜色

时间:2017-02-07 09:10:09

标签: javascript html css loops

我目前正在使用JavaScript进行一些Sharepoint自定义。

这个想法是改变" p"交通信号灯R / Y / G.

示例代码:

var oddColumn = document.querySelectorAll('td.ms-rteTableOddCol-default p');
var evenColumn = document.querySelectorAll('td.ms-rteTableEvenCol-default p');

function checkOddColumns() {
for (var i = 0; i < oddColumn.length; i++){
if (oddColumn[i].innerHTML.indexOf("Y") >= 1 && oddColumn[i].innerHTML.indexOf("Y") < 20) {
    oddColumn[i].style.color = "yellow";
    oddColumn[i].style.backgroundColor = "yellow";
    oddColumn[i].style.border = "1px solid yellow";
    oddColumn[i].style.borderRadius = "50%";
    oddColumn[i].style.width = "20px";
    oddColumn[i].style.height = "20px";
    oddColumn[i].style.marginLeft = "auto";
    oddColumn[i].style.marginRight = "auto";
}

现在的问题是,我发现querySelectorAll更适合我的需求,但我以前使用过getElementsByClassName没有问题。但是,一旦我将getElementsByClassName替换为querySelectorAll,backgroundColor和color就会停止更改,并且始终默认为黑色文本/白色背景。

我不知道为什么这不起作用考虑如果我没有循环这样做,通过手动通过控制台定位元素,它完美地工作。在循环中执行此操作时会出现此问题。

代码/我应该尝试的东西是否存在问题,或者只是Sharepoint再次陷入困境?

1 个答案:

答案 0 :(得分:0)

答案就在这一行

if (oddColumn[i].innerHTML.indexOf("Y") >= 1 && oddColumn[i].innerHTML.indexOf("Y") < 20) {

在使用querySelectorAll而不是getElementsByClassName之后,if条件检查应该相应地进行修改。更改后

oddColumn[i].innerHTML.indexOf("Y") >= 1 && oddColumn[i].innerHTML.indexOf("Y") < 20) {

简单地

oddColumn[i].innerHTML.indexOf("Y") === 0 {

代码开始工作