循环和.append的jQuery/JavaScript

循环和.append的jQuery/JavaScript,javascript,jquery,Javascript,Jquery,我昨天开始使用jQuery和JavaScript,但遇到了一个错误 我想做的就是在H1标签后随机放置广告(假设一个页面上有10个H1被2=5个AdPosition分割),现在在随机选择的H1之后添加5个AdBlocks 听起来很简单,但我无法实现…:/因为jQuery或myCode只粘贴一个AdBlock 工作 MyHTML: <body> <div id="content-inner"> <h1 class="headline">Headline&

我昨天开始使用jQuery和JavaScript,但遇到了一个错误

我想做的就是在H1标签后随机放置广告(假设一个页面上有10个H1被2=5个AdPosition分割),现在在随机选择的H1之后添加5个AdBlocks

听起来很简单,但我无法实现…:/因为jQuery或myCode只粘贴一个AdBlock

工作


MyHTML:

<body>
<div id="content-inner">
    <h1 class="headline">Headline</h1>
    <h1 class="headline">Headline</h1>
    <h1 class="headline">Headline</h1>
    <h1 class="headline">Headline</h1>
    <h1 class="headline">Headline</h1>
    <h1 class="headline">Headline</h1>
    <h1 class="headline">Headline</h1>
    <h1 class="headline">Headline</h1>
    <h1 class="headline">Headline</h1>
    <h1 class="headline">Headline</h1>
</div>
</body>​

大字标题
大字标题
大字标题
大字标题
大字标题
大字标题
大字标题
大字标题
大字标题
大字标题
​

MyJQUERY/JavaScript:

//count H1
var countH1 = parseFloat($("#content-inner h1").length)-1; //-1 because 0 is also a number!

//how often the ads should be displayed
var ad_count = Math.round(countH1 / 2);

//random helper
var min = 0;
var max = countH1;

//random position
for (counter = 0; counter < ad_count; counter++){
    var random_position = Math.round((Math.random() * (max - min)) + min);

    console.log("Random_Position:", random_position);

    // paste google-code

    if ($(".headline").hasClass('advertised') == true) {
        random_position++;

        console.log('already advertised!')

        if (random_position > countH1) {
            random_position--;
            }
    } else {
        $('h1:eq('+random_position+')').append('<div class="google_ad1"></div>');
        $('h1.headline').addClass('advertised');
        }
}

console.log("CountH1 -1, because 0=1, 1=2,....", countH1);
console.log(werbung_anzahl);
console.log(zufall_position);
console.log(counter);
//计数H1
var countH1=parseFloat($(“#内容内部h1”).length)-1//-1,因为0也是一个数字!
//广告应该多久显示一次
var ad_count=数学四舍五入(countH1/2);
//随机助手
var min=0;
var max=countH1;
//随机位置
用于(计数器=0;计数器计数H1){
随机_位置--;
}
}否则{
$('h1:eq('+random_position+'))。追加('');
$('h1.headline').addClass('advised');
}
}
log(“CountH1-1,因为0=1,1=2,…”,CountH1);
控制台日志(werbung_anzahl);
控制台日志(zufall_位置);
控制台日志(计数器);
使用此行

if ($(".headline").hasClass('advertised') == true)
您正在检查.headline元素中是否有(!)已发布广告。在第一步之后,总有一个标题已经被广告了,所以这个比较是真实的

您想做的是:检查当前索引的.headline是否已发布广告

if ($(".headline").eq(random_position).hasClass('advertised') == true)
除此之外,您正在将类“advised”添加到所有(!)h1.headline元素中。这就是你想做的

$('h1.headline').eq(random_position).addClass('advertised');
编辑:这是最新的提琴在

for(计数器=0;计数器
使用此行

if ($(".headline").hasClass('advertised') == true)
您正在检查.headline元素中是否有(!)已发布广告。在第一步之后,总有一个标题已经被广告了,所以这个比较是真实的

您想做的是:检查当前索引的.headline是否已发布广告

if ($(".headline").eq(random_position).hasClass('advertised') == true)
除此之外,您正在将类“advised”添加到所有(!)h1.headline元素中。这就是你想做的

$('h1.headline').eq(random_position).addClass('advertised');
编辑:这是最新的提琴在

for(计数器=0;计数器
如果我错了,请有人纠正我,但是您正在将类“advised”添加到所有h1元素中,这意味着在第二个循环中,您正在测试advised是否已添加到h1中,现在将始终为真,并且不再出现任何添加

如果我错了,请有人纠正我,但您正在添加该类对于所有h1元素,这意味着在第二个循环中,您正在测试是否已将Adverted添加到h1中,这将始终为true,并且不会再添加任何内容使用jQuery的链接功能:

$('h1:eq('+random_position+')').append('<div class="google_ad1"></div>').addClass('advertised');
$('h1:eq('+random_position+')).append(''.addClass('advised');

这只会将
播发的
类添加到刚才附加到的H1中。

使用jQuery的链接功能:

$('h1:eq('+random_position+')').append('<div class="google_ad1"></div>').addClass('advertised');
$('h1:eq('+random_position+')).append(''.addClass('advised');

这只会将
advised
类添加到您刚才附加到的H1中。

hi当我将您的代码片段粘贴到我的JSFIDLE时,什么都不会发生……但是当我像这样粘贴它时:if($(“.headline”).eq('+random_position+).hasClass('advised')==true)它在一个H1之后生成3个adblock(不是所有人)我已经完全按照上面提到的方式更新了提琴,效果很好:如果您将提琴更新为:当我将您的代码片段粘贴到我的JSFIDLE时,它将始终显示10个标题的5个广告。没有任何事情发生……但是当我粘贴它时,就像:If($(“.headline”).eq(“+random_position+”).hasClass('advised')==true)它在oneH1之后生成3个adblock(不是所有人)我已经完全按照上面提到的方式更新了提琴,效果很好:如果你把提琴更新成这样:它总是会为10条头条显示5条广告。是的,这是真的,我会努力找出问题所在……提琴的thx,是的,我会努力找出问题所在……提琴的thx,你的答案的thx,这是t的解决方案他给我的提示是“马克·沃尔特斯”!但现在发生的是,有时两个广告框出现在H1之后…嗨,谢谢你的回答这是“马克·沃尔特斯”给我的提示的解决方案!但现在发生的是,有时两个广告框出现在H1之后。。。