0

我是 JS 新手,正在从事一项需要:

当用户单击突出显示按钮时,将 css 类应用于每个其他 li 元素,这样您就可以交替使用颜色,并显示图像。

我无法让颜色更改的切换开关正常工作,我也无法显示图像。

    <script>

        var colors = new Array()
        colors[0] = "#cc0099";
        colors[1] = "#a4c400";
        colors[2] = "#9900cc";

        var counter = 0;

        window.onload = function()
        {
            var highlightBtn= document.getElementById("highlight_btn");
            highlightBtn.onclick = switchColors;
        }

        function switchColors()
        {   
            var imgSrc = "images/" + [i];
            var changeLI = document.getElementsByClassName("change");
            changeLI.innerHTML = counter;
            counter++;              
        }

    </script>

    <h1>Happy Mothers Day!</h1>
    <h2>Things to get Mom:</h2>

    <ul>
        <li class="change">New Plants</li>
        <li>Flowers</li>
        <li class="change">A Day at the Spa</li>
        <li>A Picture of Yourself</li>
        <li class="change">New Shoes!</li>
        <li>Anything with a Heart on It</li>
        <li class="change"> Chocolate</li>
    </ul>

    <input id="highlight_btn" type="button" value="Highlight">
4

2 回答 2

0

使用 getElementsByClassName 代替 getClass,它甚至没有在文档中定义。要更改颜色,请使用 Element.style.color 属性。

var changeLi = document.getElementsByClassName("change");

for(var i = 0; i < changeLi.length; i ++) {
    changeLi[i].style.color = colors[i];
});
于 2013-05-06T12:21:42.623 回答
0

你可以做这样的事情(不清楚你到底想要什么),但这向你展示了原则。

HTML

<h1>Happy Mothers Day!</h1>
<h2>Things to get Mom:</h2>
<img id="mom" src="">
<ul>
    <li class="change">New Plants</li>
    <li>Flowers</li>
    <li class="change">A Day at the Spa</li>
    <li>A Picture of Yourself</li>
    <li class="change">New Shoes!</li>
    <li>Anything with a Heart on It</li>
    <li class="change">Chocolate</li>
</ul>
<input id="highlight_btn" type="button" value="Highlight">

Javascript

var colors = [];
var images = [];
var counter1 = 0;
var counter2 = 0;

colors.push("#cc0099");
colors.push("#a4c400");
colors.push("#9900cc");

images.push("http://imageshack.us/scaled/thumb/104/9071003006mini2lpl0.jpg");
images.push("http://imageshack.us/scaled/thumb/121/spirra.jpg");
images.push("http://imageshack.us/scaled/thumb/123/s4020001ret9qr.jpg");

function switchColors() {
    var changes = document.getElementsByClassName("change");

    Array.prototype.forEach.call(changes, function (change) {
        change.style.backgroundColor = colors[counter1];
    });

    counter1 += 1;
    if (counter1 > colors.length - 1) {
        counter1 = 0;
    }

    document.getElementById("mom").src = images[counter2];
    counter2 += 1;
    if (counter2 > images.length - 1) {
        counter2 = 0;
    }
}

window.addEventListener("load", function () {
    document.getElementById("highlight_btn").addEventListener("click", switchColors, false);
}, false);

jsfiddle上

于 2013-05-06T12:31:31.633 回答