我昨天从jQuery和JavaScript开始,遇到了一个错误。
我只想在H1标签后随机放置广告(假设页面上有10 H1,下潜2=5 AdPosition),现在在随机选择的H1之后添加5 AdBlocks。
听起来很简单,但我无法实现.:/因为jQuery或myCode只粘贴一个AdBlock。
JsFiddle:http://jsfiddle.net/byt3w4rri0r/eCBCK/ -工作!
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);发布于 2012-10-02 09:28:33
用这条线
if ($(".headline").hasClass('advertised') == true)你正在检查是否有(!).headline元素已经做了广告宣传。在第一步之后,总是有一个.headline被宣传,所以这个比较将是正确的。
您想要做的事情:检查具有当前索引的.headline是否已进行广告宣传
if ($(".headline").eq(random_position).hasClass('advertised') == true)最重要的是,您正在将类“公告”添加到所有(!)你的h1标题元素。这就是你想要做的
$('h1.headline').eq(random_position).addClass('advertised');编辑:这是从http://jsfiddle.net/eCBCK/19上最新的小提琴中完全更改的for循环
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');
}
}发布于 2012-10-02 09:28:36
如果我错了,有人会纠正我,但是您正在将类“公告”添加到所有的h1元素中,这意味着在第二个循环中,如果公告已经添加到h1中,那么它将永远是真的,并且不再追加添加。
发布于 2012-10-02 09:36:48
使用jQuery的链接特性:
$('h1:eq('+random_position+')').append('<div class="google_ad1"></div>').addClass('advertised');这只会将advertised类添加到刚刚附加到的H1中。
https://stackoverflow.com/questions/12687556
复制相似问题