
1 pooorguy 2021-01-04 10:46:32 +08:00 用 querySelector 试试,比较方便 |
2 Exin 2021-01-04 11:02:23 +08:00 根据 "rowspan == 4 ,width == 20% ,nnerHTML == “历史记录” 三条件匹配的,只有这么一句。" 我猜 "rowspan == 4 ,width == 20%" 两条件匹配的,也不会很多? 可以用 `querySelector('td[rowspan="4"][width="20%"]')` 缩小候选范围 如果想通过一个表达式就准确的找到符合要求的那个元素,可能需要 XPath,参考这个 https://developer.mozilla.org/en-US/docs/Web/XPath/Introduction_to_using_XPath_in_Javascript |
3 iwh718 2021-01-04 11:03:54 +08:00 via iPhone 正则 |
4 DL9412 2021-01-04 11:05:07 +08:00 document.querySelectorAll('td[width="20%"][rowspan="4"]') 然后再找内容 |
5 yaphets666 2021-01-04 11:05:12 +08:00 querySelector 可以 但是想修改多个需要多次执行 querySelector 每次只选择第一个 |
6 yaphets666 2021-01-04 11:06:19 +08:00 最好渲染的时候给想修改的 td 标签一个自定义属性 这样子便于使用 querySelector 精准定位 |
7 qazwsxkevin OP 谢谢,有时间试试各位提到的方法~~ |
8 lqzhgood 2021-01-04 11:32:18 +08:00 @yaphets666 querySelectorAll |
9 faceRollingKB 2021-01-04 12:12:14 +08:00 3 楼正解,获取 table 的 innerHTML,然后正则匹配你说的这三个特征 |
10 61162833 2021-01-04 12:16:35 +08:00 querySelectorAll 的 Selector 参数可以匹配 innerHTML 的值吗? |
11 ianva 2021-01-04 14:44:57 +08:00 如果可以修改模板的话,可以考虑把相应的参数写在 class 上提升性能,比如 class name 为 "row-4-width-20" ,document.querySelectorAll(".row-4-width-20"),或者 document.getElementsByClassName("row-4-width-20") 当然更有问题的是,这个 rowspan == 4 ,width == 20% 作为 selector 是非常不稳定的,设计稍微一变就成历史遗留问题了,如果这行是表达谋个业务的,最好根据业务定一个 class name,然后去筛选,否则未来代码是不可维护的。 |
12 myCupOfTea 2021-01-04 16:49:51 +08:00 querySelector querySelectorAll |
13 dd112389 2021-01-04 17:03:41 +08:00 匹配到表格然后往下找. |
14 dd112389 2021-01-04 17:20:13 +08:00 let tab = document.querySelector('table'); let tds = tab.querySelectorAll('td[rowspan="4"][width="20%"]'); let fragment = document.createDocumentFragment(); for (let i = 0; i < tds.length; i++) { let td = fragment.append(tds[i]); td.style.width = '50%'; } ...... |
15 limingzheng 2021-01-04 17:50:52 +08:00 自定义个属性给赋值 id,data-*="",然后在获取这个元素 |