jquery到Plain Javascript转换

时间:2015-12-29 18:10:10

标签: javascript jquery css

我需要将一行jQuery代码转换为普通的旧JavaScript。有人可以指导我吗?

$('a').filter(function(index) {
    return $(this).text() === "Officer Title Equivalent*";
}).each(function() {
    $(this).html($(this).html().replace("*", "<span style='color:red'>*</span>"));
});

2 个答案:

答案 0 :(得分:3)

对于字面翻译......

抓住a元素。

var a = document.getElementsByTagName('a');

使用slice将节点列表强制转换为节点数组,然后使用数组方法filterforEach

[].slice.call(a).filter(function (el) {
  return el.textContent === 'Officer Title Equivalent*';
}).forEach(function (el) {
  el.innerHTML = el.textContent.replace('*', '<span style="color:red">*</span>');
});

DEMO

另一个选择是gurvinder在他的问题中暗示的 - 不需要filter,只是一个条件:

[].slice.call(a).forEach(function (el) {
  var txt = el.textContent;
  if (txt === 'Officer Title Equivalent*') {
    el.innerHTML = txt.replace('*', '<span style="color:red">*</span>');
  }
});

DEMO

约瑟夫(评论)是对的 - 你也可以这样做:

[].forEach.call(document.getElementsByTagName('a'), function (el) {
  var txt = el.textContent;
  if (txt === 'Officer Title Equivalent*') {
    el.innerHTML = txt.replace('*', '<span style="color:red">*</span>');
  }
});

DEMO

答案 1 :(得分:0)

它应该像

一样简单
var allAnchors = document.getElementsByTagName( "a" );
for ( var counter = 0; counter < allAnchors.length; counter++)
{
   var node = allAnchors.item( counter );
   if ( node.innerText === "Officer Title Equivalent*" )
   {
      node.innerHTML = node.innerHTML.replace("*", "<span style='color:red'>*</span>");
   }
}

应该适用于most browsers