简体   繁体   English

Javascript - 如果标记包含特定文本,则替换文本

[英]Javascript - Replace text if tag contains specific text

I'm using Wordpress and I need to replace a text if a tag contains a specific text. 我正在使用Wordpress,如果标签包含特定文本,我需要替换文本。 I'm not very familiar with Javascript so I hope someone here can help me :) 我对Javascript不是很熟悉,所以我希望有人可以帮助我:)

This is my html structure: 这是我的html结构:

<tbody>
<tr class="tr1">
<td class="td1">
<a href="http://www.example.com">Name 1</a>
<strong class="quantity">× 1</strong>
</td>
<td class="td2">
<span class="span1">30$</span>
</td>
</tr>
</tbody>

What I'm trying to achieve is: 我想要实现的是:

  • If span class="span1" = "30$" or if span class="span1" ="40$" 如果span class =“span1”=“30 $”或span class =“span1”=“40 $”
  • Then "Name 1" needs to be replaced by "Name 2" 然后“名称1”需要替换为“名称2”
  • If not (= span is something else than 30 or 40), then the script must not run. 如果不是(= span不是30或40),则脚本不能运行。
  • The "Name 2" will be the same with a span = 30 or 40. “名称2”将与span = 30或40相同。

I hope my explanation is clear enough. 我希望我的解释足够清楚。 I tried to search first by myself, I found some functions such as getelement and innerHTML but I didn't find how to combine it with the result I need. 我试图先自己搜索,我发现了一些功能,如getelement和innerHTML,但我没有找到如何将它与我需要的结果相结合。

Thank you! 谢谢!

EDIT: I would like to target the tag A with the specific href="http://www.example.com" 编辑:我想用特定的href =“http://www.example.com”定位标签A.

You can use querySelector() , querySelectorAll() and closest() and do something like this 您可以使用querySelector()querySelectorAll()querySelectorAll() closest()并执行类似的操作

 function changeTxt() { // get all spans var ele = document.querySelectorAll('.td2 .span1'); // iterate over the html element collection for (var i = 0; i < ele.length; i++) { // parse the text to get number // if symbol is in starting following will not work // var text = parseFloat(ele[i].innerHTML, 10); var text = parseFloat(ele[i].innerHTML.match(/\\d+(\\.\\d+)?/)[0], 10); // check the value is 30 or 40 if (text == 30 || text == 40) { // if true then get current tr and get anchor tag and update content var item = ele[i] // getting closest ancestor tr .closest('tr') // select a tag which have particular attribute value .querySelector('.tad1 a[href="http://www.example.com"]') // check item exists and update if (item) { item.innerHTML = 'Name 2'; // disabling click event (since disabled attribute will not work) //item.setAttribute('onClick', "return false;"); //or remove the href attribute item.removeAttribute('href'); // or // item.setAttribute('href','#'); } } } } changeTxt(); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <table> <tbody> <tr class="tr1"> <td class="tad1"> <a href="http://www.example.com">Name 1</a> <strong class="quantity">× 1</strong> </td> <td class="td2"> <span class="span1">30.0$</span> </td> </tr> <tr class="tr1"> <td class="tad1"> <a href="http://www.example.com">Name 1</a> <strong class="quantity">× 1</strong> </td> <td class="td2"> <span class="span1">30.1$</span> </td> </tr> <tr class="tr1"> <td class="tad1"> <a href="http://www.example.com">Name 1</a> <strong class="quantity">× 1</strong> </td> <td class="td2"> <span class="span1">20$</span> </td> </tr> <tr class="tr1"> <td class="tad1"> <a href="http://www.example.com">Name 1</a> <strong class="quantity">× 1</strong> </td> <td class="td2"> <span class="span1">£30</span> </td> </tr> <tr class="tr1"> <td class="tad1"> <a href="#">Name 1</a> <strong class="quantity">× 1</strong> </td> <td class="td2"> <span class="span1">30$</span> </td> </tr> </tbody> </table> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM