我试图使用javascript
随机化值,但在尝试了几个小时后,我连续多次失败。
这是我正在使用的代码。
<script type="text/javascript">
var banner1 = ["ca-pub-3060228829854466", "8550285936"];
var banner2 = ["ca-pub-3680851546903667", "4280702589"];
var allbanner = [banner1, banner2];
var banner = allbanner[Math.floor(Math.random() * allbanner.length)];
</script>
我添加了两个数组banner[0]
和banner[1]
。当我在另一个JS
使用时,它没有调用值#。
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- 336*280 -->
<ins class="adsbygoogle"
style="display:inline-block;width:336px;height:280px"
data-ad-client="banner[0]"
data-ad-slot="banner[1]"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
感谢您的帮助。
答案 0 :(得分:1)
<?php
function generateRandomString($length = 10) {
$characters = '0123456789';
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, strlen($characters) - 2)];
}
return $randomString;
}
?>
<script type="text/javascript">
var banner1 = ["ca-pub-3060228829854466", "<?php echo generateRandomString();?>"];
var banner2 = ["ca-pub-3680851546903667", "<?php echo generateRandomString();?>"];
var allbanner = [banner1, banner2];
var banner = allbanner[Math.floor(Math.random() * allbanner.length)];
</script>
答案 1 :(得分:1)
如果它们实际上位于不同的脚本标记中,则不能在这样的范围内共享var
。您可以通过省略var
来全局地将其分配给窗口变量,但这并不理想。
所以你需要改变
var banner = allbanner[Math.floor(Math.random() * allbanner.length)];
到
banner = allbanner[Math.floor(Math.random() * allbanner.length)];
编辑:您无法在普通的旧版香草javascript中访问脚本标记之外的javascript变量。 Can a JavaScript variable be used in plain HTML?
答案 2 :(得分:1)
您可以向<ins>
id
提供document.getElementById()
,以便您可以使用element.setAttribute()
从javascript定位,然后使用element.setAttribute()
设置其数据属性。
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- 336*280 --> <ins id="insId" class="adsbygoogle" style="display:inline-block;width:336px;height:280px" data-ad-client="" data-ad-slot=""></ins> <script type="text/javascript"> var banner1 = ["ca-pub-3060228829854466", "8550285936"]; var banner2 = ["ca-pub-3680851546903667", "4280702589"]; var allbanner = [banner1, banner2]; var banner = allbanner[Math.floor(Math.random() * allbanner.length)]; var el = document.getElementById("insId"); el.setAttribute('data-ad-client', banner[0]); el.setAttribute('data-ad-slot', banner[1]); // the below two lines are only for the purpose of the snippet console.log('data-ad-client: ' + el.getAttribute('data-ad-client')); console.log('data-ad-slot: ' + el.getAttribute('data-ad-slot')); </script> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script>
设置指定元素的属性值。如果该属性已存在,则更新该值;否则添加具有指定名称和值的新属性。
参考:developer.mozilla.org/setAttribute
以下是更正后的代码:
viewWillAppear
&#13;