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&nbsp;&nbsp;</a>
   </th>
   <th nowrap="">
    <a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="createdtime">Created Time&nbsp;&nbsp;</a>
   </th>
   <th nowrap="" colspan="2">
    <a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="smownerid">Assigned To&nbsp;&nbsp;</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&nbsp;&nbsp;</a>
   </th>
   <th nowrap="">
    <a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="createdtime">Created Time&nbsp;&nbsp;</a>
   </th>
   <th nowrap="" colspan="2">
    <a href="javascript:void(0);" class="listViewHeaderValues" data-nextsortorderval="ASC" data-columnname="smownerid">Assigned To&nbsp;&nbsp;</a>
   </th>
  </tr>
</thead>

`

终于解决了:

<script type="text/javascript">
        jQuery( document ).ready(function( $ ) {
          var orderColumns = $('a').filter(':contains(SEARCHED STRING)').parent().index();
        });
        </script>