我目前正在使用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再次陷入困境?
答案 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 {
代码开始工作