JavaScript - 如何在内容的中间插入HTML代码

时间:2013-10-24 16:59:42

标签: javascript jquery html css

我想找到内容的中点,并在<br>代码或</p>代码后面插入一段HTML代码,这样句子就不会被分割。

我可以找到内容的中间点,但我不确定如何找到最接近的<br>代码或</p>代码并插入HTML代码。

这是我到目前为止的代码。 JS Fiddle http://jsfiddle.net/sunflowersh/BHHFZ/

的jQuery

$(document).ready(function(){
var content = $(".content");

var contentLength = $('.content').text().length;

var midLength = parseInt(contentLength / 2);

midLength.closest("<br>, </p>, <br/>").append("Ad Codes Come Here");

});

4 个答案:

答案 0 :(得分:3)

我会假设你不是那个控制内容的人,或者它是p标签而不是它们并打破了所有混合。这将搜索内容中的p和br,计算它们,并将广告放在其组合长度的中点之后。

var content = $('.content').find('p, br');
var midLength = parseInt(content.length/2);
content.eq(midLength).after("Ad Codes Come Here");

在这里摆弄:http://jsfiddle.net/filever10/BHHFZ/20/

答案 1 :(得分:2)

如果您可以修改源代码以便为每个段落使用<p>标记而不是有时使用<br>,那么这样的内容就会有用:

content.children().each(function(){
    var $this = $(this);

    contLength += $this.text().length;

    if(contLength >= midLength){
         $this.after("<div class='added'>EXTRA STUFF ADDED HERE</div>");   
         return false;
    }
});

http://jsfiddle.net/BHHFZ/13/

答案 2 :(得分:1)

将您的内容分为两部分:

第一个从0到中间。 第二个从中到中

然后在第二个字符串中找到<br>标记的第一个位置。如果这足够,那么你已经完成了。

否则,如果你想从两边找到最近的<br>,那么也要搜索<br>在第一个字符串中的位置,但这次是最后一个而不是第一个字符串。比较第二部分中0和<br>之间的距离,以及第一部分中<br>位置的字符串长度。较小的意味着更接近,然后在br的位置添加你想要的任何东西(如果你想在它之后插入你的元素,则为+它的长度)

答案 3 :(得分:1)

如果你不介意将文字分成段落,你可以这样做:

$(document).ready(function(){
    var content = $(".content");
    insertAt = content.children('p') === 0 ? 0 : Math.ceil(content.children('p').length / 2);
    content.children('p').eq(insertAt).before("<p style='color: red'>mid-point</p>");
});

演示:http://jsfiddle.net/HHeLw/2/