By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
435,533 Members | 2,102 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 435,533 IT Pros & Developers. It's quick & easy.

Modify Script to change background color based on Array Index

P: n/a
Greetings

I don't know if this is possible, but this group should be able to tell me.

I have a webpage with a changing message board (I understand the problems
with having changing text, but this was a nice victory over the demand for
a scrolling message). The messages are updates on community information.
What I would like to be able to do is have the background color (and
possibly font color) change based on the Array Index. For example, if the
pool is going to be closed for chemical treatment, I would like the display
to have a red background. If there is going to be street cleaning
requiring the removal of vehicles, I would like a yellow background. For
all other messages, a default blue background.

The code I am working with and abbreviated CSS & HTML are:

<script type="text/javascript">
var msgIX = 0;
var msgs = [
" Notices and Messages", \* RED *\
"Chemical Treatment August 21", \* RED *\
"Pool Closed", \* RED *\
" Notices and Messages", \* YELLOW *\
"Street Cleaning August 12 ", \* YELLOW *\
"Remove your Vehicles from the street ", \* YELLOW *\
" Notices and Messages", \* BLUE here down *\
"Family Movie Night is ",
"August 25 ",
" Notices and Messages",
"Pub Night and Quiz is ",
"October 14 or 21 (TBD) ",
" Notices and Messages",
"Pot Luck Dinner is ",
"November--Exact Date TBD ",
" Notices and Messages",];
function scrollMessages(milliseconds) {
window.setInterval ("displayMessage()", milliseconds);
}
function displayMessage() {
if (document.getElementById != null) {
var heading = document.getElementById("scrollme");
heading.firstChild.nodeValue = msgs[msgIX];
}else{
if(navigator.appName == "Microsoft Internet Explorer") {
var heading = document.all.item("scrollme");
heading.innerText = msgs[msgIX];
}
}
++msgIX;
msgIX %= msgs.length;
}
</script>
<style>
#noticebox {
padding:"2px";
border-width:"2px";
border-style:inset;
border-color:blue;
width:174px;
height:"42px";
z-index:30;
text-align:-moz-center;
text-align:center;
background-color:"#ceg";
left:0;
}
</style>
<body onload="scrollMessge(2000)">

<div id="noticebox">
<p class="mainbold" id="scrollme"Notices and Messages</p>
</div>
Any assistance would appreciated--even if it entails telling me it cant be
done.

Thanks
DB.
..
Aug 3 '06 #1
Share this Question
Share on Google+
5 Replies


P: n/a
DavidB wrote:
I have a webpage with a changing message board (I understand the problems
with having changing text, but this was a nice victory over the demand for
a scrolling message). The messages are updates on community information.
What I would like to be able to do is have the background color (and
possibly font color) change based on the Array Index. For example, if the
pool is going to be closed for chemical treatment, I would like the display
to have a red background. If there is going to be street cleaning
requiring the removal of vehicles, I would like a yellow background. For
all other messages, a default blue background.
With a slight mofication to the messages

var msgs = [
[ " Notices and Messages", "red" ], \* RED *\
....
[ " Notices and Messages", "yellow" ], \* YELLOW *\
....
];

it's easy enough in your function to get the message and color:
var msg = msgs[ msgIndex ][ 0 ];
var color = msgs[ msgIndex ][ 1 ];

to style an element's background color:
document.getElementById( '...' ).style.backgroundColor = color;

or body:
document.body.style.backgroundColor = color;

Aug 3 '06 #2

P: n/a
"bobzimuta" <ej******@gmail.comwrote in
news:11**********************@i3g2000cwc.googlegro ups.com:
DavidB wrote:
>I have a webpage with a changing message board (I understand the
problems with having changing text, but this was a nice victory over
the demand for a scrolling message). The messages are updates on
community information. What I would like to be able to do is have the
background color (and possibly font color) change based on the Array
Index. For example, if the pool is going to be closed for chemical
treatment, I would like the display to have a red background. If
there is going to be street cleaning requiring the removal of
vehicles, I would like a yellow background. For all other messages,
a default blue background.

With a slight mofication to the messages

var msgs = [
[ " Notices and Messages", "red" ], \* RED *\
...
[ " Notices and Messages", "yellow" ], \* YELLOW *\
...
];

it's easy enough in your function to get the message and color:
var msg = msgs[ msgIndex ][ 0 ];
var color = msgs[ msgIndex ][ 1 ];

to style an element's background color:
document.getElementById( '...' ).style.backgroundColor = color;

or body:
document.body.style.backgroundColor = color;
Just exactly what I wanted. Thanks for the help!

DB
Aug 4 '06 #3

P: n/a
DavidB <ju******@david-baker.comwrote in
news:Xn*******************************@64.59.135.1 59:
Greetings

I don't know if this is possible, but this group should be able to
tell me.

I have a webpage with a changing message board (I understand the
problems with having changing text, but this was a nice victory over
the demand for a scrolling message). The messages are updates on
community information. What I would like to be able to do is have the
background color (and possibly font color) change based on the Array
Index. For example, if the pool is going to be closed for chemical
treatment, I would like the display to have a red background. If
there is going to be street cleaning requiring the removal of
vehicles, I would like a yellow background. For all other messages, a
default blue background.

The code I am working with and abbreviated CSS & HTML are:

<script type="text/javascript">
var msgIX = 0;
var msgs = [
" Notices and Messages", \* RED *\
"Chemical Treatment August 21", \* RED *\
"Pool Closed", \* RED *\
" Notices and Messages", \* YELLOW *\
"Street Cleaning August 12 ", \* YELLOW *\
"Remove your Vehicles from the street ", \* YELLOW *\
" Notices and Messages", \* BLUE here down *\
"Family Movie Night is ",
"August 25 ",
" Notices and Messages",
"Pub Night and Quiz is ",
"October 14 or 21 (TBD) ",
" Notices and Messages",
"Pot Luck Dinner is ",
"November--Exact Date TBD ",
" Notices and Messages",];
function scrollMessages(milliseconds) {
window.setInterval ("displayMessage()", milliseconds);
}
function displayMessage() {
if (document.getElementById != null) {
var heading = document.getElementById("scrollme");
heading.firstChild.nodeValue = msgs[msgIX];
}else{
if(navigator.appName == "Microsoft Internet Explorer") {
var heading = document.all.item("scrollme");
heading.innerText = msgs[msgIX];
}
}
++msgIX;
msgIX %= msgs.length;
}
</script>
<style>
#noticebox {
padding:"2px";
border-width:"2px";
border-style:inset;
border-color:blue;
width:174px;
height:"42px";
z-index:30;
text-align:-moz-center;
text-align:center;
background-color:"#ceg";
left:0;
}
</style>
<body onload="scrollMessge(2000)">

<div id="noticebox">
<p class="mainbold" id="scrollme"Notices and Messages</p>
</div>
Any assistance would appreciated--even if it entails telling me it
cant be done.

Thanks
DB.
.
I have made the changes as suggested. In Opera and Firefox the messages
cycle through correctly. In IE, the messages run through once and throw
an error:

Line 29
Char 5
Error 'msgs[...].0' is null or not an object
Code 0

Any suggestions?

DB
Aug 6 '06 #4

P: n/a
DavidB wrote:
<snip>
> var msgIX = 0;
var msgs = [
" Notices and Messages", \* RED *\
<snip>
> " Notices and Messages",];
^
<snip>
I have made the changes as suggested.
If you think about it you should see that responding by saying that the
code resulting form your changes to your original does not work, without
posting that code so people can see what you have done, is likely to be
counterproductive.
In Opera and Firefox the messages cycle through correctly.
In IE, the messages run through once and throw an error:

Line 29
Char 5
Error 'msgs[...].0' is null or not an object
Code 0
If a comma appears as the last character in an Array literal IE's
JScript erroneously uses it to imply a final undefined element in the
array, which makes the Array one longer than it would be in a correct
ECMAScript implementation, and when you iterate over the elements the
final one is undefined and will error if treated as an object.

Richard.

Aug 7 '06 #5

P: n/a
"Richard Cornford" <Ri*****@litotes.demon.co.ukwrote in news:eb6psi$kqk$1
$8*******@news.demon.co.uk:
DavidB wrote:
<snip>
>> var msgIX = 0;
var msgs = [
" Notices and Messages", \* RED *\
<snip>
>> " Notices and Messages",];
^
<snip>
>I have made the changes as suggested.

If you think about it you should see that responding by saying that the
code resulting form your changes to your original does not work, without
posting that code so people can see what you have done, is likely to be
counterproductive.
>In Opera and Firefox the messages cycle through correctly.
In IE, the messages run through once and throw an error:

Line 29
Char 5
Error 'msgs[...].0' is null or not an object
Code 0

If a comma appears as the last character in an Array literal IE's
JScript erroneously uses it to imply a final undefined element in the
array, which makes the Array one longer than it would be in a correct
ECMAScript implementation, and when you iterate over the elements the
final one is undefined and will error if treated as an object.

Richard.

Thanks Richard. The extra comma was the culprit.

DB
Aug 9 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.