0

次のコードは IE では問題なく動作しますが、Chrome では動作しません。javaスクリプトで同じページ内のリンクをHTMLで開きたい

<SCRIPT LANGUAGE="javascript">
function clickHandler()
{
    var xid= document.getElementsByTagName("span");
    var xsp= xid[0].id;   

    if(xsp.charAt(0)=="M")    {
        var oC=document.getElementById("C"+xsp.substr(1));
        if(oC.style.display=="none")
            oC.style.display="";
        else
            oC.style.display="none";
    } 
}
</SCRIPT>

htmlコードは次のとおりです

   <html>
       <BODY onClick = "clickHandler();">
           <a href="javascript:void(0)">
                <u><b><span id=M26>2011-2012</span></b></u>
           </a>   

            <div id=c26 STYLE="display:none">
                <a href="javascript:void(0)">
                   <u><b><span id=M27>2012-2013</span></b></u>
                </a>   
            </div>

            <div id=c27 STYLE="display:none"> 
            </div>
        </body>
    </html>
4

1 に答える 1

1

関数内で大文字の C を使用しますが、ID は小文字の c で始まります

var oC=document.getElementById("C"+xsp.substr(1));

である必要があります

var oC=document.getElementById("c"+xsp.substr(1));

要求された変更 (ボディ要素から onclick を削除する必要があります)

<script>
document.onclick=function(e){

  var _this=(window.event)//reference to the clicked element
              ? event.srcElement//IE
              : e.target;//others

  if(_this.id.match(/^M(\d+)$/)){//extract the number
    try{
      var oC=document.getElementById("c"+RegExp.$1);//target-element
          oC.style.display=(oC.style.display=='none')//set the display
                            ?''
                            :'none'
    }catch(e){}
  }
}
</script>
于 2012-11-30T11:24:32.600 に答える