请教js实现的功能 谢谢 请教各位高人一个问题,非常感谢!我用frame做了一个选择题的样式:这些题分布在三个页面上,用frame链接的,每道题有四个选项(即单选按钮的值):a b c d。我想实现这样的功能:当点击frame上查看结果按钮时:比较所有选中的值a b c d 看看选什么的多,就使结果的页面中对应的div显示。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $x=75;echo "你的成绩是:{$x} 分<br />";echo "你的成绩是:{$x}分<br />"; 换句话说,怎样用js获取frame框架所链接的各个页面上的内容? 一、可以用三个DIV取代三个frame;这样最好;二、如果一定要FRAME:function stasticchoice(o){ var chk=o.document.getElementsByTagName("radio") for(var i=0;i<chk.length;i++){ if(chk[i].value='a'){a++;} else if(chk[i].value='b'){b++;} else if(chk[i].value='c'){c++;} else if(chk[i].value='d'){d++;} }}var o1=top.document.getElementById("frame1");var o2=top.document.getElementById("frame2");var o3=top.document.getElementById("frame3");统计frame中的radio:var a=0,b=0,c=0,d=0;stasticchoice(o1);stasticchoice(o2);stasticchoice(o3);var arr=[];arr.push(a);arr.push(b);arr.push(c);arr.push(d);arr.sort()arr[0]应该就是你要的结果。------------随手敲的,你参考吧 用三个div是什么意思?也许您没大明白我的意思,我只用了一个frame,将页面分为上下两部分:上面部分是链接的内容,下面部分是链接。其中frame.html代码如下:<frameset rows="133,159" cols="*"><frame id="neirong" src="a.html" name="fra" /><frame src="content.html" /></frameset>下面链接部分的代码如下:content.html<body><a href="a.html" target="fra">1</a><a href="b.html" target="fra">2</a><a href="c.html" target="fra">3</a><a href="jieguo.html" target="fra">查看结果</a></body>上面链接内容代码如下,我只举一个a.html,(b.tml和c.html跟此页面内容一样)<body><table> <tr> <td>一.</td> <td><input type="radio" value="A" name="radio0" onclick="id()" />A</td> <td><input type="radio" value="B" name="radio0" onclick="id()" />B</td> <td><input type="radio" value="C" name="radio0" onclick="id()" />C</td> <td><input type="radio" value="D" name="radio0" onclick="id()" />D</td> </tr> <tr> <td>二.</td> <td><input type="radio" value="A" name="radio1" onclick="id()"/>A</td> <td><input type="radio" value="B" name="radio1" onclick="id()"/>B</td> <td><input type="radio" value="C" name="radio1" onclick="id()" />C</td> <td><input type="radio" value="D" name="radio1" onclick="id()"/>D</td> </tr></table></body>其中"查看结果"所链接的页面jieguo.html里是4个div,根据所选的ABCD个数,将相应的div显示和隐藏。(例如:A最多,将div 的id=a的层显示) 你没明白我的意思。我是说,不用FRAME做好,可以用DIV取代。如果一定要用FRAME,。。就是我后面说的一大串。不过里面有些错误,一会我把正确的贴出来 您好,我不是一定非要frame实现,当然是哪个好就用哪个了,能够实现功能就行,多谢啦!我也在尝试…… 1、主框架index.html<!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><title>测试</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><SCRIPT LANGUAGE=javascript>var arr=new Array(0,0,0,0);var arrdonePage=new Array(false,false,false);//已经做过的页面记录下来var doc=function(id){//备用 var _w=document.getElementById(id); var _d=_w.contentDocument||_w.contentWindow.document; return _d; }</SCRIPT> </head><frameset rows="133,159" cols="*"><frame id="neirong" src="a.html" name="fra" /><frame id='content' src="content.html" /></frameset><noframes><body bgcolor="#FFFFFF" text="#000000">您的浏览器不支持框架</body></noframes> </html>2、a.html(b、c相同)<!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>test</title><style type="text/css">*{ padding:0; margin:0; font-size:12px; font-family:Arial, Helvetica, sans-serif;}body{background-color:#ddd; }</style><script type="text/javascript">var arrDirty=[];var $=function(name){ return document.getElementsByName(name); }function recordClicknum(id,item){ /* 用户选择某项后可能会重选,情况复杂所以每次都循环检查选项。 尽管效率低些,但保险.这也是采用onmousedown而不是onclick的原因。 */ var chk=$('radio'+item) for(var i=0;i<chk.length;i++){ if(chk[i].checked&&i==id){ return; } //如果是前面选中的现在又点了一次,跳出 else if(chk[i].checked&&i!=id){top.arr[i]--;} //如果是前面选中的现在选别的,则前面的累减1 } chk[id].checked=true;//勾选 top.arr[id]++; //累加1 //alert(top.arr.join('|')); arrDirty[item]=true;//选择过了。做标记 top.arrdonePage[0]=true//a页做过}window.onload=function(){ var len=$('item').length; for(var i=0;i<len;i++){arrDirty.push(false);}}window.onbeforeunload=function(e){ top.arrdonePage[0]=true }</script></head><body><table id='do'> <tr id=item0 name=item> <td>一.</td> <td><input type="radio" value="A" name="radio0" onmousedown="recordClicknum(0,0)" />A</td> <td><input type="radio" value="B" name="radio0" onmousedown="recordClicknum(1,0)" />B</td> <td><input type="radio" value="C" name="radio0" onmousedown="recordClicknum(2,0)" />C</td> <td><input type="radio" value="D" name="radio0" onmousedown="recordClicknum(3,0)" />D</td> </tr> <tr id=item1 name=item> <td>二.</td> <td><input type="radio" value="A" name="radio1" onmousedown="recordClicknum(0,1)" />A</td> <td><input type="radio" value="B" name="radio1" onmousedown="recordClicknum(1,1)" />B</td> <td><input type="radio" value="C" name="radio1" onmousedown="recordClicknum(2,1)" />C</td> <td><input type="radio" value="D" name="radio1" onmousedown="recordClicknum(3,1)" />D</td> </tr></table></body></html>3、jieguo.html<!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>test</title><style type="text/css">*{ padding:0; margin:0; font-size:18px; font-family:Arial, Helvetica, sans-serif;}body{background-color:#fff; }div {border:1px solid red; display:none}</style><script type="text/javascript">window.onload=function(){ var arrID=new Array('a','b','c','d') var arr=top.arr, t=0,id=0; for(var i=0;i<arr.length;i++){ id=arr[i]>t?i:id; t=arr[i]>t?arr[i]:t; } document.getElementById(arrID[id]).style.display="block";}</script></head><body><div id=a>aaaaaaaaaaaaaaaa</div><div id=b>bbbbbbbbbbbbbbbb</div><div id=c>cccccccccccccccc</div><div id=d>dddddddddddddddd</div></body></html>4、content.html<!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>test</title><style type="text/css">*{ font-size:12px;}body{ margin:0; padding:0; font-size:14px; font-family:Arial, Helvetica, sans-serif; background-color:#fff; }span {width:100px; background:yellow; margin:20px}</style><script type="text/javascript"></script></head><body><a href="a.html" target="fra">1</a><a href="b.html" target="fra">2</a><a href="c.html" target="fra">3</a><a href="jieguo.html" target="fra">查看结果</a></body></html> 今天下午有点忙,所以贴晚了。有些因素还是没考虑周到,你自己完善吧。比如:当用户在a.html页面(就是你的链接1)选完后,进入b.html,然后又返回来接着点选。这个我没做处理,你自己做吧,我把思路都写在index.html的script里了,你看看再说。有什么就贴出来讨论。 你好,能给我解释一下jieguo.html里的js代码吗?有些地方我没看懂,谢谢! window.onload=function(){//jieguo.html页面加载完成后做以下工作: var arrID=new Array('a','b','c','d')//创建一个数组,用来保存要显示的DIV的ID,备用 var arr=top.arr/*将顶层的公共变量arr数组映射到本页面,方便使用*/, t=0/*比较过程中临时保存最大值的变量*/,id=0/*就是数组中最大值对应的下标*/; for(var i=0;i<arr.length;i++){//循环数组,对每个元素值进行比较 //如果当前数组元素值大于临时最大值,对应的数组下标id就是当前的i,否则,不改变id id=arr[i]>t?i:id; //如果当前数组元素值大于临时最大值t,则临时最大值t变更为当前数组元素值,否则不变 t=arr[i]>t?arr[i]:t; } //这样就找到了数组中的最大的那个值,和其相对应的数组下标.由于arr和arrID两个数组都是按照a、b、c、d四个DIV顺序排列,所以,arrID[最大值对应的下标]元素就是你要显示的DIV的id document.getElementById(arrID[id]).style.display="block";} 其实,数组排序很简单,arr.sort就可以搞定。但那样一来,就不知道最大值对应的是哪个DIV了,所以只好用上面的笨办法。明白了? 请问接口、子类和类以及对象时啥关系?它能在编程中起到啥作用? JS动态插入表格 看代码~ 请问一个网站的body中使用了oncopy="return false",可以用什么办法处理一下,让我可以复制内容呀? 弱弱的问个tag问题 关于菜单的问题 数据类型 javaScript 3个按钮的消息框怎么实现 js prototype问题!!!! 为什么使用event.keyCdoe会出错, hint : "event" is undefined 关于文本框input value属性的问题 javascript自学新手,入门书里有一个地方不太理解,请求坛里热心人指点!
echo "你的成绩是:{$x} 分<br />";
echo "你的成绩是:{$x}分<br />";
二、如果一定要FRAME:
function stasticchoice(o){
var chk=o.document.getElementsByTagName("radio")
for(var i=0;i<chk.length;i++){
if(chk[i].value='a'){a++;}
else if(chk[i].value='b'){b++;}
else if(chk[i].value='c'){c++;}
else if(chk[i].value='d'){d++;}
}
}
var o1=top.document.getElementById("frame1");
var o2=top.document.getElementById("frame2");
var o3=top.document.getElementById("frame3");统计frame中的radio:
var a=0,b=0,c=0,d=0;
stasticchoice(o1);
stasticchoice(o2);
stasticchoice(o3);var arr=[];
arr.push(a);arr.push(b);arr.push(c);arr.push(d);
arr.sort()
arr[0]应该就是你要的结果。
------------
随手敲的,你参考吧
也许您没大明白我的意思,我只用了一个frame,将页面分为上下两部分:上面部分是链接的内容,下面部分是链接。
其中frame.html代码如下:
<frameset rows="133,159" cols="*">
<frame id="neirong" src="a.html" name="fra" />
<frame src="content.html" />
</frameset>
下面链接部分的代码如下:content.html
<body>
<a href="a.html" target="fra">1</a>
<a href="b.html" target="fra">2</a>
<a href="c.html" target="fra">3</a>
<a href="jieguo.html" target="fra">查看结果</a>
</body>
上面链接内容代码如下,我只举一个a.html,(b.tml和c.html跟此页面内容一样)
<body>
<table>
<tr>
<td>一.</td>
<td><input type="radio" value="A" name="radio0" onclick="id()" />A</td>
<td><input type="radio" value="B" name="radio0" onclick="id()" />B</td>
<td><input type="radio" value="C" name="radio0" onclick="id()" />C</td>
<td><input type="radio" value="D" name="radio0" onclick="id()" />D</td>
</tr>
<tr>
<td>二.</td>
<td><input type="radio" value="A" name="radio1" onclick="id()"/>A</td>
<td><input type="radio" value="B" name="radio1" onclick="id()"/>B</td>
<td><input type="radio" value="C" name="radio1" onclick="id()" />C</td>
<td><input type="radio" value="D" name="radio1" onclick="id()"/>D</td>
</tr>
</table>
</body>其中"查看结果"所链接的页面jieguo.html里是4个div,根据所选的ABCD个数,将相应的div显示和隐藏。(例如:A最多,将div 的id=a的层显示)
我是说,不用FRAME做好,可以用DIV取代。如果一定要用FRAME,。。就是我后面说的一大串。不过里面有些错误,一会我把正确的贴出来
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>测试</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<SCRIPT LANGUAGE=javascript>
var arr=new Array(0,0,0,0);
var arrdonePage=new Array(false,false,false);//已经做过的页面记录下来
var doc=function(id){//备用
var _w=document.getElementById(id);
var _d=_w.contentDocument||_w.contentWindow.document;
return _d;
}
</SCRIPT>
</head><frameset rows="133,159" cols="*">
<frame id="neirong" src="a.html" name="fra" />
<frame id='content' src="content.html" />
</frameset>
<noframes><body bgcolor="#FFFFFF" text="#000000">您的浏览器不支持框架</body></noframes>
</html>2、a.html(b、c相同)
<!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>test</title><style type="text/css">
*{ padding:0; margin:0; font-size:12px; font-family:Arial, Helvetica, sans-serif;}
body{background-color:#ddd; }
</style>
<script type="text/javascript">
var arrDirty=[];
var $=function(name){ return document.getElementsByName(name); }function recordClicknum(id,item){
/*
用户选择某项后可能会重选,情况复杂所以每次都循环检查选项。
尽管效率低些,但保险.这也是采用onmousedown而不是onclick的原因。
*/
var chk=$('radio'+item)
for(var i=0;i<chk.length;i++){
if(chk[i].checked&&i==id){ return; } //如果是前面选中的现在又点了一次,跳出
else if(chk[i].checked&&i!=id){top.arr[i]--;} //如果是前面选中的现在选别的,则前面的累减1
}
chk[id].checked=true;//勾选
top.arr[id]++; //累加1
//alert(top.arr.join('|'));
arrDirty[item]=true;//选择过了。做标记
top.arrdonePage[0]=true//a页做过
}window.onload=function(){
var len=$('item').length;
for(var i=0;i<len;i++){arrDirty.push(false);}
}window.onbeforeunload=function(e){ top.arrdonePage[0]=true }
</script>
</head><body>
<table id='do'>
<tr id=item0 name=item>
<td>一.</td>
<td><input type="radio" value="A" name="radio0" onmousedown="recordClicknum(0,0)" />A</td>
<td><input type="radio" value="B" name="radio0" onmousedown="recordClicknum(1,0)" />B</td>
<td><input type="radio" value="C" name="radio0" onmousedown="recordClicknum(2,0)" />C</td>
<td><input type="radio" value="D" name="radio0" onmousedown="recordClicknum(3,0)" />D</td>
</tr>
<tr id=item1 name=item>
<td>二.</td>
<td><input type="radio" value="A" name="radio1" onmousedown="recordClicknum(0,1)" />A</td>
<td><input type="radio" value="B" name="radio1" onmousedown="recordClicknum(1,1)" />B</td>
<td><input type="radio" value="C" name="radio1" onmousedown="recordClicknum(2,1)" />C</td>
<td><input type="radio" value="D" name="radio1" onmousedown="recordClicknum(3,1)" />D</td>
</tr>
</table>
</body>
</html>
3、jieguo.html
<!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>test</title><style type="text/css">
*{ padding:0; margin:0; font-size:18px; font-family:Arial, Helvetica, sans-serif;}
body{background-color:#fff; }
div {border:1px solid red; display:none}
</style>
<script type="text/javascript">
window.onload=function(){
var arrID=new Array('a','b','c','d')
var arr=top.arr, t=0,id=0;
for(var i=0;i<arr.length;i++){
id=arr[i]>t?i:id; t=arr[i]>t?arr[i]:t;
}
document.getElementById(arrID[id]).style.display="block";
}
</script>
</head><body>
<div id=a>aaaaaaaaaaaaaaaa</div>
<div id=b>bbbbbbbbbbbbbbbb</div>
<div id=c>cccccccccccccccc</div>
<div id=d>dddddddddddddddd</div>
</body>
</html>4、content.html
<!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>test</title>
<style type="text/css">
*{ font-size:12px;}
body{ margin:0; padding:0; font-size:14px; font-family:Arial, Helvetica, sans-serif; background-color:#fff; }
span {width:100px; background:yellow; margin:20px}
</style>
<script type="text/javascript"></script>
</head><body>
<a href="a.html" target="fra">1</a>
<a href="b.html" target="fra">2</a>
<a href="c.html" target="fra">3</a>
<a href="jieguo.html" target="fra">查看结果</a>
</body>
</html>
window.onload=function(){//jieguo.html页面加载完成后做以下工作:
var arrID=new Array('a','b','c','d')//创建一个数组,用来保存要显示的DIV的ID,备用
var arr=top.arr/*将顶层的公共变量arr数组映射到本页面,方便使用*/, t=0/*比较过程中临时保存最大值的变量*/,id=0/*就是数组中最大值对应的下标*/;
for(var i=0;i<arr.length;i++){//循环数组,对每个元素值进行比较
//如果当前数组元素值大于临时最大值,对应的数组下标id就是当前的i,否则,不改变id
id=arr[i]>t?i:id;
//如果当前数组元素值大于临时最大值t,则临时最大值t变更为当前数组元素值,否则不变
t=arr[i]>t?arr[i]:t;
}
//这样就找到了数组中的最大的那个值,和其相对应的数组下标.由于arr和arrID两个数组都是按照a、b、c、d四个DIV顺序排列,所以,arrID[最大值对应的下标]元素就是你要显示的DIV的id
document.getElementById(arrID[id]).style.display="block";
}