使用javascript调用随机值

时间:2018-01-28 17:36:42

标签: javascript php jquery ajax

我试图使用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>

感谢您的帮助。

3 个答案:

答案 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

以下是更正后的代码:

&#13;
&#13;
viewWillAppear
&#13;
&#13;
&#13;