在渲染element plus 中的el-tree 通过判断渲染数据的状态来进行特定颜色的变化

 在处理el-tree的这个渲染问题最重要的就是数据结构的类型,在这个小项目中,我所处理的后端数据是一个一维的对象数组,每一项数组的children中包含了一个数组。

在我通过dom来操作想要改变el-tree的css样式的同时,发现获取到的是空数组,数据没有如愿的获取到的情况有很多,在这里遇到的是渲染是基于后端数据接口调用完成后在调用a()函数,而解决的办法是通过async和await来进行处理的,在处理完成后继续来看我们获取到的数据,我们发现获取到的是一个htmlcollection,即一个动态类型的数组,那么我们在下面生成的htmlCollectionToArray函数就是来进行处理htmlcollection成为一个array数组,在数组的数据类型基础上,在进行操作处理。

处理成数组后会发现一个是一维数组,一个是二维数组(不太严谨但可以这么理解),通过flattenArray函数(代码块第三个函数)来将二维数组转换成一维数组,再通过遍历结合判断语句来进行赋值操作。

最后处理好之后,通过arrayToHtmlCollection来将array转成htmlcollection动态数组

//通过a来进行调用函数
const a= async () => {
  let tree = document.getElementsByClassName("想要修改的class");
 let array = htmlCollectionToArray(tree);
  let newnode = flattenArray(treedata.value.value);
  for (let i = 0; i < newnode.length; i++) {
    if (newnode[i].auditResult == false) {
      array[i][0].style.color = "black";
    }
    if (newnode[i].auditResult == true) {
      array[i][0].style.color = "green";
    }
  }
  tree = arrayToHtmlCollection(array);
};
//数组扁平化
function flattenArray(array) {
  let result = [];
  let beforeResult = ["1"];
  for (let i = 0; i < array.length; i++) {
    console.log(i, "i的值");
    console.log(typeof array[i] ==="undefined");
     result = result.concat(beforeResult);
    if (typeof array[i].children !=="undefined") {
      console.log("进来");
     
      result = result.concat(array[i].children);
    }
      console.log(result,"result");
  }
  return result;
}
// 将array转换成htmlcollection
function arrayToHtmlCollection(array) {
  let collection = document.createDocumentFragment();
  for (let i = 0; i < array.length; i++) {
    let element = document.createElement("div");
    element.innerHTML = array[i].join("");
    collection.appendChild(element);
 }
  return collection;
}//将htmlcollection转换成array
function htmlCollectionToArray(collection) {
  let result = [];
  for (let i = 0; i < collection.length; i++) {
    let elements = collection[i].getElementsByTagName("*") result.push(Array.from(elements));
  }
  return result;
}    

最近更新

  1. TCP协议是安全的吗?

    2024-01-11 20:32:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-11 20:32:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-11 20:32:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-11 20:32:02       20 阅读

热门阅读

  1. 记录学习--校验文件的SHA、MD5

    2024-01-11 20:32:02       37 阅读
  2. Leetcode16-有多少小于当前数字的数字(1365)

    2024-01-11 20:32:02       38 阅读
  3. 【OpenCV学习笔记】- 学习笔记目录

    2024-01-11 20:32:02       42 阅读
  4. 文件分割与合并

    2024-01-11 20:32:02       38 阅读
  5. 力扣_数组25—柱状图中最大的矩形

    2024-01-11 20:32:02       26 阅读
  6. 线程池如何知道一个线程是否执行完成

    2024-01-11 20:32:02       35 阅读
  7. Mxnet导出onnx模型

    2024-01-11 20:32:02       31 阅读
  8. Python常用日期函数和日期处理方法

    2024-01-11 20:32:02       34 阅读