请教各位高人一个问题,非常感谢!我用frame做了一个选择题的样式:
这些题分布在三个页面上,用frame链接的,每道题有四个选项(即单选按钮的值):a b c d。我想实现这样的功能:
当点击frame上查看结果按钮时:比较所有选中的值a b c d 看看选什么的多,就使结果的页面中对应的div显示。

解决方案 »

  1.   

    $x=75;
    echo "你的成绩是:{$x} 分<br />";
    echo "你的成绩是:{$x}分<br />";
      

  2.   

    换句话说,怎样用js获取frame框架所链接的各个页面上的内容?
      

  3.   

    一、可以用三个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]应该就是你要的结果。
    ------------
    随手敲的,你参考吧
      

  4.   

    用三个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的层显示)
      

  5.   

    你没明白我的意思。
    我是说,不用FRAME做好,可以用DIV取代。如果一定要用FRAME,。。就是我后面说的一大串。不过里面有些错误,一会我把正确的贴出来
      

  6.   

    您好,我不是一定非要frame实现,当然是哪个好就用哪个了,能够实现功能就行,多谢啦!我也在尝试……
      

  7.   

    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>
      

  8.   

    今天下午有点忙,所以贴晚了。有些因素还是没考虑周到,你自己完善吧。比如:当用户在a.html页面(就是你的链接1)选完后,进入b.html,然后又返回来接着点选。这个我没做处理,你自己做吧,我把思路都写在index.html的script里了,你看看再说。有什么就贴出来讨论。
      

  9.   

    你好,能给我解释一下jieguo.html里的js代码吗?有些地方我没看懂,谢谢!
      

  10.   


    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";
    }
      

  11.   

    其实,数组排序很简单,arr.sort就可以搞定。但那样一来,就不知道最大值对应的是哪个DIV了,所以只好用上面的笨办法。明白了?