2

ここでの目標は 1.gif の onclick であり、.panel1 クラスのすべてが消え (style.display.none)、.panel2 クラスのすべてが表示される (style.display.inline)

私はこれが初めてなので、「 」またはおそらく「」の構文の問題だと思います

<!DOCTYPE html>

<html>

<head>
    <title>main</title>
    <meta charset="utf-8">

    <style type="text/css">
    .panel1 {display:inline;}
    .panel2 {display:none;}
    </style>

    <script type="text/javascript">
    function panelTransition(panelOut,panelIn)
        {
        document.getElementByClass(panelIn).style.display="inline";
        document.getElementByClass(panelOut).style.display="none";
        }
    </script>
</head>

<body>
<img class="panel1" src=1.gif onclick="panelTransition(panel1,panel2)" />
<img class="panel2" src=2.gif />
</body>

</html>
4

3 に答える 3

4

ありませんgetElementByClass。でgetElementsByClassNameあり、アイテムの配列を返すため、それらをループするようにコードを変更する必要があります。

function panelTransition(panelOut, panelIn) {
    var inPanels = document.getElementsByClassName(panelIn);
    for (var i = 0; i < inPanels.length; i++) {
        inPanels[i].style.display = 'inline';
    }

    var outPanels = document.getElementsByClassName(panelOut);
    for (var i = 0; i < outPanels.length; i++) {
        outPanels[i].style.display = 'none';
    }
}

jQuery などの JavaScript ライブラリを使用している場合、これははるかに簡単に実行できます。また、前述したように、 への引数を引用符で囲む必要がありますpanelTransition

<img class="panel1" src=1.gif onclick="panelTransition('panel1', 'panel2')" />
<img class="panel2" src=2.gif />
于 2012-05-18T19:34:44.443 に答える
0

<html>

<head>
    <title>main</title>
    <meta charset="utf-8">

    <style type="text/css">
    .panel1 {display:inline;}
    .panel2 {display:none;}
    </style>

    <script type="text/javascript">
    function panelTransition(panelOut,panelIn)
                {
                    // panelIn gets turned on
                    setDisplay(panelIn,"inline");

                    // panelOut gets turned off
                    setDisplay(panelOut,"none");
                }

                function setDisplay(className,displayState)
                {
                    // retrieve a list of all the matching elements
                    var list = document.getElementsByClassName(className);

                    // step through the list
                    for(i=0; i<list.length; i++) {
                        // for each element, set the display property
                        list[i].style.display = displayState;
                    }                        
                }
    </script>
</head>

<body>
<img class="panel1" src="1.gif" onclick="panelTransition('panel1','panel2')" />
<img class="panel2" src="2.gif" onclick="panelTransition('panel2','panel1')" />
</body>

</html>

または、jQueryで同じことを達成できます

// fires when the page is up and running
$(document).ready(function(){

     // find all the panel1 elements, 
     // attach an on click handler
     $(".panel1").bind("click", function(){ 

            // find all the panel1 elements
            // set their css display property to inline
            $(".panel1").css("display","inline"); 

            // find all the panel2 elements
            // set their css display property to none
            $(".panel2").css("display","none");
     });

     $(".panel2").bind("click", function(){ 
            $(".panel2").css("display","inline"); 
            $(".panel1").css("display","none");
     });
});

ここで jQuery のすべてを学ぶことができます: http://www.jquery.com/

コードを実行できるのは 1 回だけです。panel1 の画像をクリックするとすぐに、すべての panel2 の画像が消えてしまい、それらをもう一度クリックすることはできません。

于 2012-05-18T19:30:10.083 に答える
0
<img class="panel1" src=1.gif onclick="panelTransition('panel1','panel2')" />

そこに引用符が必要だと思います

于 2012-05-18T19:30:48.743 に答える