0

私のサイトでは、iframe.each href 内に menu.html としてテキスト メニューを作成し、別の div に入れました。親ページのタイトルに応じて、divの1つのクラスが変更されることを望んでいました(たとえば、親のタイトルが「ホーム」の場合、前述のdivのクラスは「マーク」に変更されます)。次のスクリプトを試しましたが、それでも機能しません。なにが問題ですか?再度、感謝します!

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> </title>
<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript">
switch (window.parent.document.title) {
case "hoempage":document.getElementById("nada1").className="marked"; break;
case "about": document.getElementById("nada2").className = "marked"; break;
        case "jokes": document.getElementById("nada3").className = "marked"; break;
        case "freewares": document.getElementById("nada4").className = "marked"; break;
        case "links": document.getElementById("nada5").className = "marked"; break;
        default: alert("god damn!"); break;
    }

</script>
</head>
<body dir="rtl">
<ul class="menu1">
<li><a href="Index.html" target="_parent"><div id="nada1">homepage</div></a></li>
<li><a href="About.html" target="_parent"><div id="nada2">about</div></a>  </li>
<li><a href="Jokes.html" target="_parent"><div id="nada3">jokes</div></a></li>
<li><a href="freewares.html" target="_parent"><div id="nada4">freewares</div></a>    </li>
<li> <a href="NetGames.html" target="_parent"><div id="nada5">links</div></a>    </li>
</ul>
<br /><br /><hr />
<div class="write_mail">if you want to rgister to site updates enter name + email:
<form action="sent.php" method="post" >
    <input type="text" name="subscr" /><br />email
    <input type="text" name="perosnal"/><br />name
    <br />
    <input type="submit" name="submit" onclick="alert('good job and thanks!');"/>    </form></div>

</body>
</html>

編集:解決策を試しましたが、それでも機能しません。親コードは次のとおりです。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>homepage</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body dir="rtl">
<iframe src="menu.html" class="navibar" height="430px" width="50px" scrolling="no" style="border-style:none"></iframe>
<br />
<p class="About">built by zetta the beginner 2012<br /> 
</p>
</body>
</html>

menu.html は、メッセージの冒頭で更新したコードです。再び嫌がらせをして申し訳ありません:(

4

2 に答える 2

0

break;各 の後に使用するのを忘れましたcase。a が有効な場合は常に、 acaseによって停止されるまで次のコマンドが実行されますbreak

switch(value){
   case c0: f0();
   case c1: f1();
   case c2: f2();
   default: f3();
}

value等しい場合c1f1()実行されます。case c2代わりに次のラベル ( )f2が呼び出されf2ますf3。ケースの実行を停止する必要があります。

switch(value){
   case c0: f0(); break;
   case c1: f1(); break;
   case c2: f2(); break;
   default: f3(); break; // doesn't really need a break since it is the last
}

これは最初は直感に反するように思えるかもしれませんが、DRY の概念に従う唯一の方法です。

switch(myletter){
   case 'A':
   case 'B':
   case 'C': alert("Hey, it's either A,B or C"); break;
   default: alert("Sorry, I don't know this letter yet :/");
}

詳細については、MDN: switchを参照してください。

于 2012-10-08T11:21:42.743 に答える
0

次のように iframe コードを埋め込むページ:

      <html>
<head>
<title>main</title>
<style>
.marked{background:yellow}
</style>
</head>
<body>
<div id="class1">dddddddddddddddd</div><div id="class2">dddddddddddddddd</div>
<iframe src="iframe.htm"></iframe>
</body>
</html>

iframe ページ コード:

    <html>    
    <head>   
    <title>something</title>
    <script type="text/javascript">       
    switch (window.parent.document.title) {         
        case  "main": window.parent.document.getElementById("class1").className = "marked";break;
        case "About": window.parent.document.getElementById("class2").className = "marked";break;
        case "Interesting facts":             
    document.getElementById("class3").className =  "marked";break;
        default: alert("I failed, sorry! :(");   break; 
     }    
    </script>   
    </head>
    <body></body>  
    </html>
于 2012-10-08T11:40:35.713 に答える