flipside1212
Technical User
Hey, I adapted a bad rotator script to diplay random ads and it works for the most part. But every so often it gets the error....
"'BannerAdImages[...].src' is null or not an object"
Every image in the array has shown up so it's not a problem with naming syntax, and the problem happens rarely, and on different images so i think it's something to do with the random statement. Anyways, here's the code, I'd be really happy if someone could help me out!
<script language="JavaScript 1.2"><!--
//JavaScript Banner Ad Rotator version 2.1 - last modified 16 November 2000
//Obtained from
//User defined variables - change these variables to alter the behaviour of the script
var ImageFolder = "ads"; //Folder name containing the images
var ImageFileNames = new Array('ad1_beatstreet_small.jpg', 'ad2_zionsgate_small.jpg', 'ad3_brina_small.jpg',
'ad4_metro3106_small.jpg', 'ad5_eightzero_small.jpg', 'ad6_dadabase_small.jpg', 'ad7_karmajeans_small.jpg',
'ad9_blueskies_small.jpg', 'ad10_bcalhoun_small.jpg'); //List of images to use
var ImageURLs = new Array(' ' '
' ' ' '
' ' //List of hyperlinks associated with the
list of images
var DefaultURL = ' //Default hyperlink for the Banner Ad
var DisplayInterval = 7; //Number of seconds to wait before the next image is displayed
var TargetFrame = ""; //Name of the frame to open the hyperlink into
//Internal variables (do not change these unless you know what you are doing)
var IsValidBrowser = false;
var BannerAdCode = 0;
var BannerAdImages = new Array(NumberOfImages);
var DisplayInterval = DisplayInterval * 1000;
var NumberOfImages = ImageFileNames.length;
//Add a trailing forward slash to the ImageFolder variable if it does not already have one
if (ImageFolder.substr(ImageFolder.length - 1, ImageFolder.length) != "/" && ImageFolder != ""
{ ImageFolder +=
"/";
}
if (TargetFrame == '') {
var FramesObject = null;
} else {
var FramesObject = eval('parent.' + TargetFrame);
}
//Function runs when this page has been loaded and does the following:
//1. Determine the browser name and version (since the script will only work on Netscape 3+ and Internet Explorer
4+).
//2. Start the timer object that will periodically change the image displayed by the Banner Ad.
//3. Preload the images used by the Banner Ad rotator script
function InitialiseBannerAdRotator() {
//Determine the browser name and version
//The script will only work on Netscape 3+ and Internet Explorer 4+
var BrowserType = navigator.appName;
var BrowserVersion = parseInt(navigator.appVersion);
if (BrowserType == "Netscape" && (BrowserVersion >= 3)) {
IsValidBrowser = true;
}
if (BrowserType == "Microsoft Internet Explorer" && (BrowserVersion >= 4)) {
IsValidBrowser = true;
}
if (IsValidBrowser) {
TimerObject = setTimeout("ChangeImage()", DisplayInterval);
for (i = 0; i < NumberOfImages; i++) {
BannerAdImages = new Image();
BannerAdImages.src = ' ' + ImageFolder + ImageFileNames;
}
}
}
//Function to change the src of the Banner Ad image
function ChangeImage() {
if (IsValidBrowser) {
BannerAdCode = (Math.round((Math.random()*8)+1))
window.document.bannerad.src = BannerAdImages[BannerAdCode].src;
TimerObject = setTimeout("ChangeImage()", DisplayInterval);
}
}
//Function to redirect the browser window/frame to a new location,
//depending on which image is currently being displayed by the Banner Ad.
//If Banner Ad is being displayed on an old browser then the DefaultURL is displayed
function ChangePage() {
if (IsValidBrowser) {
if (TargetFrame != '' && (FramesObject)) {
FramesObject.location.href = ImageURLs[BannerAdCode];
} else {
window.open(ImageURLs[BannerAdCode]);
}
} else if (!IsValidBrowser) {
document.location = DefaultURL;
}
}
// --></script>
<a href="javascript:ChangePage()"><img src=" alt="Banner
Advertisement" border="0" hspace="0" name="bannerad" WIDTH="230" HEIGHT="85"></a></TD>
"'BannerAdImages[...].src' is null or not an object"
Every image in the array has shown up so it's not a problem with naming syntax, and the problem happens rarely, and on different images so i think it's something to do with the random statement. Anyways, here's the code, I'd be really happy if someone could help me out!
<script language="JavaScript 1.2"><!--
//JavaScript Banner Ad Rotator version 2.1 - last modified 16 November 2000
//Obtained from
//User defined variables - change these variables to alter the behaviour of the script
var ImageFolder = "ads"; //Folder name containing the images
var ImageFileNames = new Array('ad1_beatstreet_small.jpg', 'ad2_zionsgate_small.jpg', 'ad3_brina_small.jpg',
'ad4_metro3106_small.jpg', 'ad5_eightzero_small.jpg', 'ad6_dadabase_small.jpg', 'ad7_karmajeans_small.jpg',
'ad9_blueskies_small.jpg', 'ad10_bcalhoun_small.jpg'); //List of images to use
var ImageURLs = new Array(' ' '
' ' ' '
' ' //List of hyperlinks associated with the
list of images
var DefaultURL = ' //Default hyperlink for the Banner Ad
var DisplayInterval = 7; //Number of seconds to wait before the next image is displayed
var TargetFrame = ""; //Name of the frame to open the hyperlink into
//Internal variables (do not change these unless you know what you are doing)
var IsValidBrowser = false;
var BannerAdCode = 0;
var BannerAdImages = new Array(NumberOfImages);
var DisplayInterval = DisplayInterval * 1000;
var NumberOfImages = ImageFileNames.length;
//Add a trailing forward slash to the ImageFolder variable if it does not already have one
if (ImageFolder.substr(ImageFolder.length - 1, ImageFolder.length) != "/" && ImageFolder != ""
"/";
}
if (TargetFrame == '') {
var FramesObject = null;
} else {
var FramesObject = eval('parent.' + TargetFrame);
}
//Function runs when this page has been loaded and does the following:
//1. Determine the browser name and version (since the script will only work on Netscape 3+ and Internet Explorer
4+).
//2. Start the timer object that will periodically change the image displayed by the Banner Ad.
//3. Preload the images used by the Banner Ad rotator script
function InitialiseBannerAdRotator() {
//Determine the browser name and version
//The script will only work on Netscape 3+ and Internet Explorer 4+
var BrowserType = navigator.appName;
var BrowserVersion = parseInt(navigator.appVersion);
if (BrowserType == "Netscape" && (BrowserVersion >= 3)) {
IsValidBrowser = true;
}
if (BrowserType == "Microsoft Internet Explorer" && (BrowserVersion >= 4)) {
IsValidBrowser = true;
}
if (IsValidBrowser) {
TimerObject = setTimeout("ChangeImage()", DisplayInterval);
for (i = 0; i < NumberOfImages; i++) {
BannerAdImages = new Image();
BannerAdImages.src = ' ' + ImageFolder + ImageFileNames;
}
}
}
//Function to change the src of the Banner Ad image
function ChangeImage() {
if (IsValidBrowser) {
BannerAdCode = (Math.round((Math.random()*8)+1))
window.document.bannerad.src = BannerAdImages[BannerAdCode].src;
TimerObject = setTimeout("ChangeImage()", DisplayInterval);
}
}
//Function to redirect the browser window/frame to a new location,
//depending on which image is currently being displayed by the Banner Ad.
//If Banner Ad is being displayed on an old browser then the DefaultURL is displayed
function ChangePage() {
if (IsValidBrowser) {
if (TargetFrame != '' && (FramesObject)) {
FramesObject.location.href = ImageURLs[BannerAdCode];
} else {
window.open(ImageURLs[BannerAdCode]);
}
} else if (!IsValidBrowser) {
document.location = DefaultURL;
}
}
// --></script>
<a href="javascript:ChangePage()"><img src=" alt="Banner
Advertisement" border="0" hspace="0" name="bannerad" WIDTH="230" HEIGHT="85"></a></TD>