javascript - 在 x 个单词后插入带有 jquery 的 javascript 代码

标签 javascript jquery

我正在尝试在 html 格式的文本中插入 JavaScript 代码。因此我使用这个 jquery 代码:

function getActualWords(node) {
  return node.textContent.split(/\s+/).filter(function(word) {
    return word.trim().length;
  });
}

function insertElemAfterNthWord(opts) {
  var defaults = {
    'nth': 5,
    'elemText': 'new element',
    'elemTag': 'div'
  };

  for (var prop in opts) {
    if (opts.hasOwnProperty(prop)) {
      defaults[prop] = opts[prop];
    }
  }

  var d = defaults,
    tag = d.elemTag.replace(/<|>/g, ''),
    elem = document.createElement(tag);

  elem.textContent = d.elemText;

  d.nth = parseInt(d.nth, 10);

  if (d.node) {
    var n = d.node.firstChild,
      words = getActualWords(n),
      wordCount = words.length;

    while ((n.nodeType !== 3 || d.nth > wordCount) && n.nextSibling) {

      n = n.nextSibling;
      words = getActualWords(n);
      wordCount = words.length;
    }
    if (getActualWords(n).length < d.nth) {
      return;
    } else {
      var w = getActualWords(n).slice(0, d.nth).pop(),
        i = n.textContent.indexOf(w);
      n.splitText(i + w.length);
      n.parentNode.insertBefore(elem, n.nextSibling);
      n.parentNode.insertBefore(document.createTextNode(' '), n.nextSibling);
      n.parentNode.normalize();

      return elem;
    }

  }
}


insertElemAfterNthWord({
  'nth': 10,
  'elemTag': 'span',
  'elemText': 'this is the newly-added text inside the newly-added element!',
  'node': document.querySelector('div > div')
}).classList.add('newlyAdded');
span {
  color: #f90;
}
div {
  margin-left: auto;
  margin-right: auto;
}
.newlyAdded {
  background-color: #ffa;
}
<div class="newsitem_text">
  <div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec pellentesque urna eu pulvinar maximus. Sed elit nunc, vestibulum ut eros vitae, pellentesque rhoncus ipsum. In et metus non diam porttitor maximus iaculis nec lectus. Quisque sodales scelerisque
    auctor. Nam rutrum venenatis eros, eu condimentum erat placerat ut. Pellentesque sed tempus sem, eu viverra ipsum. Vestibulum nec turpis convallis, dapibus massa vitae, posuere mauris. Suspendisse mattis tincidunt lorem. Aliquam erat volutpat. Nullam
    at tincidunt erat, maximus laoreet ipsum.</div>

参见 jsfiddle:

http://jsfiddle.net/davidThomas/y9pw7z0p/1/

在这里找到:

Insert a <br /> tag after x words using jQuery

是否可以更换

'elemText': 'this is the newly-added text inside the newly-added element!'

使用 JavaScript 代码,例如 adsense?

最佳答案

您可以使用 span balise 并轻松地用 jquery 替换它,例如:

'elemText':'<span class="adsense">this is the newly-added text inside the newly-added element!</span>'

然后用 Jquery 替换:

$('.adsense').html('adsense code');

关于javascript - 在 x 个单词后插入带有 jquery 的 javascript 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39608908/

相关文章:

javascript - jQuery - 当 id 是数组类型表示法时,ID 选择器需要帮助

javascript - 文件输入的输入事件和/或更改事件在 Chrome 和 Opera 中触发,但在 Firefox、Edge 或 IE11 中不触发

javascript - 从左侧进行切换

jquery - 使用 jQuery 设置新窗口的大小

javascript - 使用类过滤多行并计算行以更改进度条

jquery - 将 JQuery 效果应用于新添加的元素

javascript - jQuery - 从字符串中删除文本

javascript - orientationEvent.gamma 取 +180 到 -180 度

javascript - 自动http过期

javascript - 如何将多个 id 大写(使用 javascript 的 php 中的复选框)