1

Hi I have a post here http://jsfiddle.net/7ztEf/9/ that explains what i want to achieve.

I will break it down, I need to fill a div bg based on the values of an array index, these are 4 random numbers between 1-40, say the numbers returned are 5,15,25,35. The logic is if numbers range 1-10 then div bg is red, if 11-20 then blue, etc

Ive been killing myself over this, really need some advise re best way of doing this, many thanks P

function myNumbers(numbers, type) {
for (var x in numbers) {
   document.getElementById(type + x).innerHTML = numbers[x];

    /*
    here I need to query each index value and apply to ball div, ie:

    if index 0 numbers > 0) && numbers <= 10 than ball-0 div bg is red
    if index 0 numbers > 11) && numbers <= 20 than ball-0 div bg is blue
    if index 0 numbers > 21) && numbers <= 30 than ball-0 div bg is orange
    if index 0 numbers > 31) && numbers <= 40 than ball-0 div bg is green

    repeating for eack index value. 

    if index 1 numbers > 0) && numbers <= 10 than ball-1 div bg is red

    etc       

    */

} 

}

myNumbers([5, 15, 25, 35], 'test-')

3 Answers 3

1

For just a few colors I would just write it out like this:

for (var x = 0, n = numbers.length; x != n; ++x) {
    var nr = numbers[x], 
        el = document.getElementById(type + x),
        color;

   el.innerHTML = nr;

    if (nr > 0) {
        if (nr <= 10) {
            color = 'red';
        } else if (nr <= 20) {
            color = 'blue';
        } else if (nr <= 30) {
            color = 'orange';
        } else if (nr <= 40) {
            color = 'green';
        }
    }
    if (color) {
        el.style.color = color;
    }
} 

Demo

Sign up to request clarification or add additional context in comments.

Comments

1

Try this..

for (var x = 0;x<numbers.length;x++) {

    el = document.getElementById(type + x);

el.innerHTML = nr;

if (nr > 0) {
    if (nr <= 10) {
        color = 'red';
    } else if (nr <= 20) {
        color = 'blue';
    } else if (nr <= 30) {
        color = 'orange';
    } else if (nr <= 40) {
        color = 'green';
    }
}
if (color) {
    document.getElementById('ball-' + x).style.backgroundColor = color;
}
} 

Comments

0

I'd do something like this:

var colors = ['red', 'blue', 'orange', 'green'];

function myNumbers(numbers, type) {
    for (var i = 0; i < numbers.length; i++) {
        var number = numbers[i];
        var color = colors[Math.floor(number / colors.length)];

        document.getElementById(type + i).innerHTML = number;
        document.getElementById('ball-' + i).style.backgroundColor = color;
    }
}

Don't iterate over arrays with the for...in syntax. That iterates over the properties of an object.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.