首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery/JavaScript循环和.append

jQuery/JavaScript循环和.append
EN

Stack Overflow用户
提问于 2012-10-02 09:15:51
回答 3查看 337关注 0票数 1

我昨天从jQuery和JavaScript开始,遇到了一个错误。

我只想在H1标签后随机放置广告(假设页面上有10 H1,下潜2=5 AdPosition),现在在随机选择的H1之后添加5 AdBlocks。

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

JsFiddle:http://jsfiddle.net/byt3w4rri0r/eCBCK/ -工作!

MyHTML:

代码语言:javascript
复制
<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:

代码语言: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);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-02 09:28:33

用这条线

代码语言:javascript
复制
if ($(".headline").hasClass('advertised') == true)

你正在检查是否有(!).headline元素已经做了广告宣传。在第一步之后,总是有一个.headline被宣传,所以这个比较将是正确的。

您想要做的事情:检查具有当前索引的.headline是否已进行广告宣传

代码语言:javascript
复制
if ($(".headline").eq(random_position).hasClass('advertised') == true)

最重要的是,您正在将类“公告”添加到所有(!)你的h1标题元素。这就是你想要做的

代码语言:javascript
复制
$('h1.headline').eq(random_position).addClass('advertised');

编辑:这是从http://jsfiddle.net/eCBCK/19上最新的小提琴中完全更改的for循环

代码语言:javascript
复制
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").eq(random_position).hasClass('advertised') == true) {
        counter--;

        console.log('already advertised!')


    } else {
        $('h1:eq('+random_position+')').append('<div class="google_ad1"></div>');
        $('h1.headline').eq(random_position).addClass('advertised');
        }
}
票数 1
EN

Stack Overflow用户

发布于 2012-10-02 09:28:36

如果我错了,有人会纠正我,但是您正在将类“公告”添加到所有的h1元素中,这意味着在第二个循环中,如果公告已经添加到h1中,那么它将永远是真的,并且不再追加添加。

票数 0
EN

Stack Overflow用户

发布于 2012-10-02 09:36:48

使用jQuery的链接特性:

代码语言:javascript
复制
$('h1:eq('+random_position+')').append('<div class="google_ad1"></div>').addClass('advertised');

这只会将advertised类添加到刚刚附加到的H1中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12687556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档