javascript 如何在 <td> 中搜索字符串,然后添加到该 ID?
How with javascript search in <td> for string and then add to that id?
我需要在 table 中查找字符串,但是 table 的内容是使用未分配 ID 的 foreach 生成的。我想找到包含文本的 <td>
,然后我需要添加到那个 <td>
id,然后使用它。有可能吗?
--- 几个小时后编辑 --
这要困难得多。我有广告并在里面寻找!!搜索这个。
我只需要找出它在 thead 中的位置(第 1、2、3、4 等),这样我就可以继续处理整个专栏。
带有 !!SEARCH THIS 的示例代码:
`
<thead>
<tr class="listViewHeaders">
<th width="5%">
<input type="checkbox" id="listViewEntriesMainCheckBox">
</th>
<th nowrap="">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="cf_835">!!SEARCH THIS </a>
</th>
<th nowrap="">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="createdtime">Created Time </a>
</th>
<th nowrap="" colspan="2">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="smownerid">Assigned To </a>
</th>
</tr>
</thead>
`
您可以使用 XPATH 评估您的 document
,然后处理该元素。
function getElementByXpath(path) {
return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
var element = getElementByXpath("//td[contains(text(),'Eve')]");
element.setAttribute('id', 'someId-' + Math.floor((Math.random() * 100) + 1))
console.log(element);
<table>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
你说你的内容没有任何 id 但你又说你必须将字符串添加到 id。
你说的是哪个ID?
关于信息,即使在 foreach 中,您也可以使用一个简单的计数器为您的内容分配一个 id:
int i = 0;
foreach(foo in bar)
{
<td id=i>some content</td>
i++;
}
通过 document.querySelectorAll('td').length;
计算 td
元素的数量,然后在每个 td
中循环并搜索,如果 td
等于您的 string
,则将属性 ID 设置为这个 td 元素
示例:
var len = document.querySelectorAll('td').length;
for (var i=0; i < len; i++){
if ( document.querySelectorAll('td')[i].innerHTML == "Eve"){
document.querySelectorAll('td')[i].setAttribute('id', 'yourID')
}
}
#yourID{
color: red;
font-weight: bold
}
<table>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
难度更大。我有广告并在里面寻找!!搜索这个。
我只需要找出它在 thead 中的位置(第 1、2、3、4 等),这样我就可以继续处理整个专栏。
带有 !!SEARCH THIS 的示例代码:
`
<thead>
<tr class="listViewHeaders">
<th width="5%">
<input type="checkbox" id="listViewEntriesMainCheckBox">
</th>
<th nowrap="">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="cf_835">!!SEARCH THIS </a>
</th>
<th nowrap="">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="createdtime">Created Time </a>
</th>
<th nowrap="" colspan="2">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="smownerid">Assigned To </a>
</th>
</tr>
</thead>
`
终于解决了:
<script type="text/javascript">
jQuery( document ).ready(function( $ ) {
var orderColumns = $('a').filter(':contains(SEARCHED STRING)').parent().index();
});
</script>
我需要在 table 中查找字符串,但是 table 的内容是使用未分配 ID 的 foreach 生成的。我想找到包含文本的 <td>
,然后我需要添加到那个 <td>
id,然后使用它。有可能吗?
--- 几个小时后编辑 --
这要困难得多。我有广告并在里面寻找!!搜索这个。
我只需要找出它在 thead 中的位置(第 1、2、3、4 等),这样我就可以继续处理整个专栏。
带有 !!SEARCH THIS 的示例代码: `
<thead>
<tr class="listViewHeaders">
<th width="5%">
<input type="checkbox" id="listViewEntriesMainCheckBox">
</th>
<th nowrap="">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="cf_835">!!SEARCH THIS </a>
</th>
<th nowrap="">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="createdtime">Created Time </a>
</th>
<th nowrap="" colspan="2">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="smownerid">Assigned To </a>
</th>
</tr>
</thead>
`
您可以使用 XPATH 评估您的 document
,然后处理该元素。
function getElementByXpath(path) {
return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
}
var element = getElementByXpath("//td[contains(text(),'Eve')]");
element.setAttribute('id', 'someId-' + Math.floor((Math.random() * 100) + 1))
console.log(element);
<table>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
你说你的内容没有任何 id 但你又说你必须将字符串添加到 id。
你说的是哪个ID?
关于信息,即使在 foreach 中,您也可以使用一个简单的计数器为您的内容分配一个 id:
int i = 0;
foreach(foo in bar)
{
<td id=i>some content</td>
i++;
}
通过 document.querySelectorAll('td').length;
计算 td
元素的数量,然后在每个 td
中循环并搜索,如果 td
等于您的 string
,则将属性 ID 设置为这个 td 元素
示例:
var len = document.querySelectorAll('td').length;
for (var i=0; i < len; i++){
if ( document.querySelectorAll('td')[i].innerHTML == "Eve"){
document.querySelectorAll('td')[i].setAttribute('id', 'yourID')
}
}
#yourID{
color: red;
font-weight: bold
}
<table>
<tr>
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>
难度更大。我有广告并在里面寻找!!搜索这个。 我只需要找出它在 thead 中的位置(第 1、2、3、4 等),这样我就可以继续处理整个专栏。
带有 !!SEARCH THIS 的示例代码: `
<thead>
<tr class="listViewHeaders">
<th width="5%">
<input type="checkbox" id="listViewEntriesMainCheckBox">
</th>
<th nowrap="">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="cf_835">!!SEARCH THIS </a>
</th>
<th nowrap="">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="createdtime">Created Time </a>
</th>
<th nowrap="" colspan="2">
<a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="smownerid">Assigned To </a>
</th>
</tr>
</thead>
`
终于解决了:
<script type="text/javascript">
jQuery( document ).ready(function( $ ) {
var orderColumns = $('a').filter(':contains(SEARCHED STRING)').parent().index();
});
</script>