2012-10-08 14 views
0

在我的网站中,我在iframe.each href内建立了一个文本菜单,作为menu.html,我放入了单独的div。我希望根据父页面的标题,其中一个div的类将被更改(例如:如果父项的标题是“home”,则上述div的类将更改为“已标记”)。我已经尝试了下面的脚本,但它仍然没有工作。哪里不对?再次感谢!根据父标题在html页面(位于iframe内)更改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是我在消息开始时更新的代码。 骚扰:(

+0

是来自同一个域名的网页? – mplungjan

+0

窗口不是一个对象。输入错误?和案件没有休息? – yukaizhao

+0

相同的域,有休息,它仍然拒绝工作。建议? –

回答

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> 
0

再对不起你忘了每个case后使用break;看,每当case是有效的,直到被break停止下面的命令将被执行。

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

现在,如果value 。等于c1f1()将要执行的下一个标签(case c2),而不是f2被调用,所以是f2f3你需要停止的情况下执行:

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

+0

它仍然不执行类更改。如果标题是用希伯来文或阿拉伯文(不是英文),那么这很重要吗? –