我正在尝试创建一个相当简单的JavaScript,每次加载页面时都会显示一个数组中的随机图像。我需要弄清楚如何在不向body标签添加代码的情况下运行此方法。有没有办法在没有放置在body标签中的onload函数的情况下完成此操作?
这就是我所依赖的onLoad:
ImageSwitch=new Array();
ImageSwitch[0]='1.jpg';
ImageSwitch[1]='2.jpg';
ImageSwitch[2]='3.jpg';
ImageSwitch[3]='4.jpg';
function swapImage()
{
document.getElementById("theImage").setAttribute("src", ImageSwitch[
Math.round(Math.random()*3)])
}
要实现这一目标的任何其他想法吗?
答案 0 :(得分:12)
Wombleton的答案是我会做的。但是,还有另一种方法可以做到这一点。在正文标记中,无论您要将随机图像放在何处,都可以使用带有图像标记的document.write脚本。确保您有一系列图片网址和替代品,如下所示:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
var imageURLs = [
"http://www.myserver.com/images/image1.png"
, "http://www.myserver.com/images/image2.png"
, "http://www.myserver.com/images/image3.png"
];
function getImageTag() {
var img = '<img src=\"';
var randomIndex = Math.floor(Math.random() * imageURLs.length);
img += imageURLs[randomIndex];
img += '\" alt=\"Some alt text\"/>';
return img;
}
</script>
</head>
<body>
<script type="text/javascript">
document.write(getImageTag());
</script>
</body>
</html>
同样,这并不理想,但如果您不想使用任何类型的onload事件,而不仅仅是您放在<body>
标记中的事件,那么它非常有用。
答案 1 :(得分:3)
改编自jQuery的ready
函数,并对图像类型做出一些假设:
(function() {
var urls = ['1', '2', '3', '4'];
function swap() {
document.getElementById('theImage').setAttribute('src', urls[Math.round(Math.random() * urls.length)] + '.jpg');
}
// Mozilla, Opera and webkit nightlies currently support this event
if ( document.addEventListener ) {
window.addEventListener( 'load', swap, false );
// If IE event model is used
} else if ( document.attachEvent ) {
window.attachEvent( 'onload', swap );
}
})();
答案 2 :(得分:1)
通过一些更改,此代码将随机加载图像并加载相应的链接。
<html>
<head/>
<title>Jorgesys Html test</title>
<script type="text/javascript">
var imageUrls = [
"http://prueba.agenciareforma.com/appiphone/android/img/newspapers/stackoverflow.png"
, "http://ww.mydomain.com/img/newspapers/reforma.png"
, "http://ww.mydomain.com/img/newspapers/nytimes.png"
, "http://ww.mydomain.com/img/newspapers/oglobo.png"
, "http://ww.mydomain.com/img/newspapers/lefigaro.png"
, "http://ww.mydomain.com/img/newspapers/spiegel.png"
];
var imageLinks = [
"http://www.stackoverflow.com"
, "http://www.reforma.com"
, "http://www.nytimes.com/"
, "https://oglobo.globo.com/"
, "http://www.lefigaro.fr/international/"
, "http://www.spiegel.de/international/"
];
function getImageHtmlCode() {
var dataIndex = Math.floor(Math.random() * imageUrls.length);
var img = '<a href=\"' + imageLinks[dataIndex] + '"><img src="';
img += imageUrls[dataIndex];
img += '\" alt=\"Jorgesys Stackoverflow.com\"/></a>';
return img;
}
</script>
</head>
<body bgcolor="white">
<script type="text/javascript">
document.write(getImageHtmlCode());
</script>
</body>
</html>
答案 3 :(得分:0)
你可以将它放在页面底部的javascript中,并暂停。
setTimeout(swapImage,500);或某些。
答案 4 :(得分:0)
只是不要把javascript放在函数中。
如果你把它从函数中取出,它将在页面加载时运行。
当它在函数中时,除非被调用,否则它不会运行。
答案 5 :(得分:0)
您可以使用document.write生成img标记。甚至像<img src="javascript:Math.round(Math.random()*3)+'.jpg';" />
答案 6 :(得分:0)
你不需要在body标签中加载onload-在脚本中添加一个处理程序, 在头部,或在身体前加载的另一个脚本。
(function(){
var fun=function(){
// definefunction
}
if(window.addEventListener){
window.addEventListener('load', fun,false);
else if(window.attachEvent)window.attachEvent('load', fun);
})();
答案 7 :(得分:0)
您的回答可以在glados.cc/myfaucet找到 有一个下载脚本,其中包含您正在寻找的代码 这是一个简短的概要: 创建文件config.php并将其放入:
<?php
// Advertisement Codes
// All ads rotate. There are 3 types: square, text, and banner. Add HTML code to the array
$squareAds = array('<iframe scrolling="no" style="border: 0; width: 250px; height: 250px;" src="http://myadserver.com"></iframe>');
$textAds = array('<p><strong><a href="http://yoururl.com">YourURL</a></strong></p>', '<p><strong>Get your own site</strong> <a href="http://yoursite.com">here</a></p>');
$bannerAds = array('<iframe scrolling="no" style="border: 0; width: 468px; height: 60px;" src="http://youradserver.com"></iframe>
');
?>
然后,在你正在服务的页面上,比如index.php来显示你的随机链接或图片或文字:
<?php
require_once('config.php');
function getAd($arr){
return $arr[rand(0, count($arr)-1)];
}
echo "any plain text or html" . getAd($textAds) . "any plain text or html" . getAd($bannerAds) . "any plain text or html" . getAd($squareAds) . "any plain text or html";
?>
当然,您可以创建任意数量的$ xxxAds数组并将它们命名为您想要的任何数组,并且您可以使用csv格式填写数组以及要显示的任何html或jscript,以及每个数组的无限数量 你也可以创建尽可能多的新&#34; getAd&#34;具有不同名称的功能,以便您可以在一个页面上显示多个唯一的iframe广告
答案 8 :(得分:0)
在完整路径或目录路径的数组中添加图像,刷新页面图像添加到<body background="images/image1.jpg">
<script type="text/javascript">
function changeRandomimage() {
var imageArray = ["images/image1.jpg","images/image2.jpg","images/image3.jpg"];
var randomImage = Math.floor(Math.random() * imageArray.length);
document.body.background = imageArray[randomImage];
}
changeRandomimage();
</script>