首先描述下问题,一个系统,是左和右的两个 iframe (没办法,网上找的一个后台界面,看着喜欢那个风格,一直在用那个做界面。)
点击 左 iframe 中的链接,刷新右 iframe 内容,本人 js 很菜只是拷拷代码的水平,恳请各位高手帮忙解决以下问题。左 iframe 的链接如下,其中 I2 是右 iframe 的 name
<a href="#" onClick="javascript:parent.frames['I2'].location.href='http://bbs.blueidea.com/'">xxxx</a>这样的一句,放在 foldmenu 这个 div 外,就能生效,点了之后右 iframe 能改变,但是放到 foldmenu 这个 div 里就没用了。请问如何改呢,万分感谢?下面是文件的代码。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
<script type="text/javascript">
function FOLDMenu(id,onlyone){
if(!document.getElementById || !document.getElementsByTagName){return false;}
this.menu=document.getElementById(id);
this.submenu=this.menu.getElementsByTagName("ul");
this.speed=3;
this.time=10;
this.onlyone=onlyone==true?onlyone:false;
this.links = this.menu.getElementsByTagName("a");
}
FOLDMenu.prototype.init=function(){
var mainInstance = this;
for(var i=0;i<this.submenu.length;i++){
this.submenu[i].getElementsByTagName("span")[0].onclick=function(){
mainInstance.toogleMenu(this.parentNode);
};
}
for(var i=0;i<this.links.length;i++){
this.links[i].onclick=function(){
this.className = "current";
mainInstance.removeCurrent(this);
}
}
/*
for(var i=0;i<links.length;i++){
if (links[i].href == document.location.href){
links[i].className = "current";
break;
}
}
*/
}
FOLDMenu.prototype.removeCurrent = function(link){
for (var i = 0; i < this.links.length; i++){
if (this.links[i] != link){
this.links[i].className = " ";
}
}
}
FOLDMenu.prototype.toogleMenu=function(submenu){
if(submenu.className=="open"){
this.closeMenu(submenu);
}else{
this.openMenu(submenu);
}
}
FOLDMenu.prototype.openMenu=function(submenu){
var fullHeight=submenu.getElementsByTagName("span")[0].offsetHeight;
var links = submenu.getElementsByTagName("a");
for (var i = 0; i < links.length; i++){
fullHeight += links[i].offsetHeight;
}
var moveBy = Math.round(this.speed * links.length);
var mainInstance = this;
var intId = setInterval(function() {
var curHeight = submenu.offsetHeight;
var newHeight = curHeight + moveBy;
if (newHeight <fullHeight){
submenu.style.height = newHeight + "px";
}else {
clearInterval(intId);
submenu.style.height = "";
submenu.className = "open";
}
}, this.time);
this.collapseOthers(submenu);
}
FOLDMenu.prototype.closeMenu=function(submenu){
var minHeight=submenu.getElementsByTagName("span")[0].offsetHeight;
var moveBy = Math.round(this.speed * submenu.getElementsByTagName("a").length);
var mainInstance = this;
var intId = setInterval(function() {
var curHeight = submenu.offsetHeight;
var newHeight = curHeight - moveBy;
if (newHeight > minHeight){
submenu.style.height = newHeight + "px";
}else {
clearInterval(intId);
submenu.style.height = "";
submenu.className = "";
}
}, this.time);
}
FOLDMenu.prototype.collapseOthers = function(submenu){
if(this.onlyone){
for (var i = 0; i < this.submenu.length; i++){
if (this.submenu[i] != submenu){
this.closeMenu(this.submenu[i]);
}
}
}
}
</script>
<style type="text/css">
*{margin:0;padding:0; font-size:12px;}
span{ background-color:#f60; height:23px; color:#FFFFFF; text-indent:28px;}
.foldmenu{width:151px; padding:0px; margin:auto;}
.foldmenu ul{list-style-type:none;height:23px;line-height:23px;overflow:hidden;cursor:pointer;margin-top:2px;}
.foldmenu ul.open{height:auto;}
.foldmenu ul span{display:block;padding-left:5px}
.foldmenu ul li{height:23px;line-height:23px;}
.foldmenu li a{color:#066;display:block;text-decoration:none;text-align:center; background-color:#ccc;line-height:23px;}
.foldmenu li a:hover{color:#000; background-color:#fff;line-height:23px;}
.foldmenu li a.current{color:#066;line-height:23px;}
</style>
</head>
<body><!-- 放在这里可以使用 -->
<a href="#" onClick="javascript:parent.frames['I2'].location.href='xxxxxxxxxxxxx.htm'">同样的链接写法,放在这里可以使用</a>
<!-- 放在这里可以使用 -->
<div style="width:165px;">
<div id="foldmenu" class="foldmenu">
<!-- 只要放到这个 div 中就不可以使用 -->
<ul class="open">
<span>第一组菜单</span>
<!-- 放在这里不可以使用 -->
<li><a href="#" onClick="javascript:parent.frames['I2'].location.href='xxxxxxxxxxxxx.htm'">xxxxxxxx</a></li>
<li><a href="#" onClick="javascript:parent.frames['I2'].location.href='xxxxxxxxxxxxx.htm'">xxxxxxxx</a></li>
<!-- 放在这里不可以使用 -->
</ul>
<ul>
<span>第二组菜单</span>
<li><a href="#">xxxxxxxx</a></li>
<li><a href="#">xxxxxxxx</a></li>
<li><a href="#">xxxxxxxx</a></li>
</ul>
<ul>
<span>第三组菜单</span>
<li><a href="#">xxxxxxxx</a></li>
<li><a href="#">xxxxxxxx</a></li>
<li><a href="#">xxxxxxxx</a></li>
</ul>
</div>
</div><script type="text/javascript">
window.onload = function() {
myMenu = new FOLDMenu("foldmenu",true);
myMenu.init();
};
</script>
</body>
</html>
点击 左 iframe 中的链接,刷新右 iframe 内容,本人 js 很菜只是拷拷代码的水平,恳请各位高手帮忙解决以下问题。左 iframe 的链接如下,其中 I2 是右 iframe 的 name
<a href="#" onClick="javascript:parent.frames['I2'].location.href='http://bbs.blueidea.com/'">xxxx</a>这样的一句,放在 foldmenu 这个 div 外,就能生效,点了之后右 iframe 能改变,但是放到 foldmenu 这个 div 里就没用了。请问如何改呢,万分感谢?下面是文件的代码。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title></title>
<script type="text/javascript">
function FOLDMenu(id,onlyone){
if(!document.getElementById || !document.getElementsByTagName){return false;}
this.menu=document.getElementById(id);
this.submenu=this.menu.getElementsByTagName("ul");
this.speed=3;
this.time=10;
this.onlyone=onlyone==true?onlyone:false;
this.links = this.menu.getElementsByTagName("a");
}
FOLDMenu.prototype.init=function(){
var mainInstance = this;
for(var i=0;i<this.submenu.length;i++){
this.submenu[i].getElementsByTagName("span")[0].onclick=function(){
mainInstance.toogleMenu(this.parentNode);
};
}
for(var i=0;i<this.links.length;i++){
this.links[i].onclick=function(){
this.className = "current";
mainInstance.removeCurrent(this);
}
}
/*
for(var i=0;i<links.length;i++){
if (links[i].href == document.location.href){
links[i].className = "current";
break;
}
}
*/
}
FOLDMenu.prototype.removeCurrent = function(link){
for (var i = 0; i < this.links.length; i++){
if (this.links[i] != link){
this.links[i].className = " ";
}
}
}
FOLDMenu.prototype.toogleMenu=function(submenu){
if(submenu.className=="open"){
this.closeMenu(submenu);
}else{
this.openMenu(submenu);
}
}
FOLDMenu.prototype.openMenu=function(submenu){
var fullHeight=submenu.getElementsByTagName("span")[0].offsetHeight;
var links = submenu.getElementsByTagName("a");
for (var i = 0; i < links.length; i++){
fullHeight += links[i].offsetHeight;
}
var moveBy = Math.round(this.speed * links.length);
var mainInstance = this;
var intId = setInterval(function() {
var curHeight = submenu.offsetHeight;
var newHeight = curHeight + moveBy;
if (newHeight <fullHeight){
submenu.style.height = newHeight + "px";
}else {
clearInterval(intId);
submenu.style.height = "";
submenu.className = "open";
}
}, this.time);
this.collapseOthers(submenu);
}
FOLDMenu.prototype.closeMenu=function(submenu){
var minHeight=submenu.getElementsByTagName("span")[0].offsetHeight;
var moveBy = Math.round(this.speed * submenu.getElementsByTagName("a").length);
var mainInstance = this;
var intId = setInterval(function() {
var curHeight = submenu.offsetHeight;
var newHeight = curHeight - moveBy;
if (newHeight > minHeight){
submenu.style.height = newHeight + "px";
}else {
clearInterval(intId);
submenu.style.height = "";
submenu.className = "";
}
}, this.time);
}
FOLDMenu.prototype.collapseOthers = function(submenu){
if(this.onlyone){
for (var i = 0; i < this.submenu.length; i++){
if (this.submenu[i] != submenu){
this.closeMenu(this.submenu[i]);
}
}
}
}
</script>
<style type="text/css">
*{margin:0;padding:0; font-size:12px;}
span{ background-color:#f60; height:23px; color:#FFFFFF; text-indent:28px;}
.foldmenu{width:151px; padding:0px; margin:auto;}
.foldmenu ul{list-style-type:none;height:23px;line-height:23px;overflow:hidden;cursor:pointer;margin-top:2px;}
.foldmenu ul.open{height:auto;}
.foldmenu ul span{display:block;padding-left:5px}
.foldmenu ul li{height:23px;line-height:23px;}
.foldmenu li a{color:#066;display:block;text-decoration:none;text-align:center; background-color:#ccc;line-height:23px;}
.foldmenu li a:hover{color:#000; background-color:#fff;line-height:23px;}
.foldmenu li a.current{color:#066;line-height:23px;}
</style>
</head>
<body><!-- 放在这里可以使用 -->
<a href="#" onClick="javascript:parent.frames['I2'].location.href='xxxxxxxxxxxxx.htm'">同样的链接写法,放在这里可以使用</a>
<!-- 放在这里可以使用 -->
<div style="width:165px;">
<div id="foldmenu" class="foldmenu">
<!-- 只要放到这个 div 中就不可以使用 -->
<ul class="open">
<span>第一组菜单</span>
<!-- 放在这里不可以使用 -->
<li><a href="#" onClick="javascript:parent.frames['I2'].location.href='xxxxxxxxxxxxx.htm'">xxxxxxxx</a></li>
<li><a href="#" onClick="javascript:parent.frames['I2'].location.href='xxxxxxxxxxxxx.htm'">xxxxxxxx</a></li>
<!-- 放在这里不可以使用 -->
</ul>
<ul>
<span>第二组菜单</span>
<li><a href="#">xxxxxxxx</a></li>
<li><a href="#">xxxxxxxx</a></li>
<li><a href="#">xxxxxxxx</a></li>
</ul>
<ul>
<span>第三组菜单</span>
<li><a href="#">xxxxxxxx</a></li>
<li><a href="#">xxxxxxxx</a></li>
<li><a href="#">xxxxxxxx</a></li>
</ul>
</div>
</div><script type="text/javascript">
window.onload = function() {
myMenu = new FOLDMenu("foldmenu",true);
myMenu.init();
};
</script>
</body>
</html>
document.getElementById('I2').location.href=xxxx.htm'
top.document.getElementById('I2').src=xxxx.htm'
parent.document.getElementById('I2').src='xxxxxx.htm'
是的,name 和 id 都是 I2
<a href="your.html" target="I2">xxxxxx</a>//设置打开目标是iframe name = I2的窗口即可
FOLDMenu.prototype.init=function(){
var mainInstance = this;
for(var i=0;i<this.submenu.length;i++){
this.submenu[i].getElementsByTagName("span")[0].onclick=function(){
mainInstance.toogleMenu(this.parentNode);
};
}
for(var i=0;i<this.links.length;i++){
//this.links[i].onclick=function(){
// this.className = "current";
// mainInstance.removeCurrent(this);
}
}
<a href="#" onClick="javascript:parent.frames['I2'].location.href='http://bbs.blueidea.com/'">xxxx</a>
这两个地方有冲突,楼主着情修改之即可
// this.className = "current";
// mainInstance.removeCurrent(this);把这三行注销掉后,点了就没有滑动的效果了。
function FOLDMenu(id,onlyone){
if(!document.getElementById || !document.getElementsByTagName){return false;}
this.menu=document.getElementById(id);
this.submenu=this.menu.getElementsByTagName("ul");
this.speed=3;
this.time=10;
this.onlyone=onlyone==true?onlyone:false;
this.links = this.menu.getElementsByTagName("a");
}
FOLDMenu.prototype.init=function(){
var mainInstance = this;
for(var i=0;i<this.submenu.length;i++){
this.submenu[i].getElementsByTagName("span")[0].onclick=function(){
mainInstance.toogleMenu(this.parentNode);
};
}
for(var i=0;i<this.links.length;i++){
//this.links[i].onclick=function(){
// this.className = "current";
// mainInstance.removeCurrent(this);
// }
addEventHandler(this.links[i],"click",function(){
this.className = "current";
mainInstance.removeCurrent(this);
});
}
/*
for(var i=0;i<links.length;i++){
if (links[i].href == document.location.href){
links[i].className = "current";
break;
}
}
*/
}
FOLDMenu.prototype.removeCurrent = function(link){
for (var i = 0; i < this.links.length; i++){
if (this.links[i] != link){
this.links[i].className = " ";
}
}
}
FOLDMenu.prototype.toogleMenu=function(submenu){
if(submenu.className=="open"){
this.closeMenu(submenu);
}else{
this.openMenu(submenu);
}
}
FOLDMenu.prototype.openMenu=function(submenu){
var fullHeight=submenu.getElementsByTagName("span")[0].offsetHeight;
var links = submenu.getElementsByTagName("a");
for (var i = 0; i < links.length; i++){
fullHeight += links[i].offsetHeight;
}
var moveBy = Math.round(this.speed * links.length);
var mainInstance = this;
var intId = setInterval(function() {
var curHeight = submenu.offsetHeight;
var newHeight = curHeight + moveBy;
if (newHeight <fullHeight){
submenu.style.height = newHeight + "px";
}else {
clearInterval(intId);
submenu.style.height = "";
submenu.className = "open";
}
}, this.time);
this.collapseOthers(submenu);
}
FOLDMenu.prototype.closeMenu=function(submenu){
var minHeight=submenu.getElementsByTagName("span")[0].offsetHeight;
var moveBy = Math.round(this.speed * submenu.getElementsByTagName("a").length);
var mainInstance = this;
var intId = setInterval(function() {
var curHeight = submenu.offsetHeight;
var newHeight = curHeight - moveBy;
if (newHeight > minHeight){
submenu.style.height = newHeight + "px";
}else {
clearInterval(intId);
submenu.style.height = "";
submenu.className = "";
}
}, this.time);
}
FOLDMenu.prototype.collapseOthers = function(submenu){
if(this.onlyone){
for (var i = 0; i < this.submenu.length; i++){
if (this.submenu[i] != submenu){
this.closeMenu(this.submenu[i]);
}
}
}
}
function addEventHandler(target, type, func) {
if (target.addEventListener)
target.addEventListener(type, func, false);
else if (target.attachEvent)
target.attachEvent("on" + type, func);
else target["on" + type] = func;
}
</script>
改了一点