moling11 2016-07-04 09:43 采纳率: 100%
浏览 2881
已采纳

div的点击事件,有复杂的循环判断,用 js和 jquery都行

n个div,每个div里都有一个单选按钮, 效果:1、**点击第一个div**,单选被选中(单选框用图片代替),再次点击第一个div,单选被取消;2、同时,点击第二个div时,单选被选中,第一个div的单选被取消;

  • 写回答

5条回答 默认 最新

  • 兜茄破 2016-07-06 01:52
    关注
     <div onclick="clickDiv(this)"><input id="radio1" type="radio" value="1" />Value 1</div>
    <div onclick="clickDiv(this)"><input id="radio2" type="radio" value="2" />Value 2</div>
    <div onclick="clickDiv(this)"><input id="radio3" type="radio" value="3" />Value 3</div>
    <div onclick="clickDiv(this)"><input id="radio4" type="radio" value="4" />Value 4</div>
    <div onclick="clickDiv(this)"><input id="radio5" type="radio" value="5" />Value 5</div>
    <div onclick="clickDiv(this)"><input id="radio6" type="radio" value="6" />Value 6</div>
    
    <script type="text/javascript">
    
        var lastRadio;
        var lastAction;
        var allRadio = [];
    
        //初始化获得到所有单选钮
        (function(){
    
            var allInput = document.getElementsByTagName("input");              
            for(var i=0;i<allInput.length;i++){
                if(allInput[i].type=="radio"){
                    allRadio.push(allInput[i]);
                }
            }
        }());
    
        //当DIV被点击时触发
        function clickDiv(divObj){
    
            var obj = divObj.children[0];
            obj.checked = true;
    
            for(var i=0;i<allRadio.length;i++){
                if(obj.id == allRadio[i].id){
                    var currRadio = document.getElementById(obj.id);
                    if(currRadio == lastRadio & lastAction){
                        currRadio.checked = false;
                    }
                    lastRadio = currRadio;
                    lastAction = currRadio.checked;
    
                }else{
                    document.getElementById(allRadio[i].id).checked = false;
                }
            }
        }
    
    </script>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog