| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 648 人关注过本帖
标题:一个棘手的JS 问题 求高手!
只看楼主 加入收藏
玲珑八宝
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-8-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
一个棘手的JS 问题 求高手!
一个本来看似简单的问题却卡住了,求高手帮忙。

效果: 点击一个Radio按钮实现开关一体, 就是变相实现checkbox的功能。 点击就“选择”, 再点击就“不选择” 。
问题: 只能实现第一次“不选择”, 之后就无法实习“选择” 功能。 求高手现身说法。谢谢

function on_off(id)
{
    alert(document.getElementById(id).checked);  
   
    if(document.getElementById(id).checked == false)
        document.getElementById(id).checked = true;
        
    else if(document.getElementById(id).checked == true)
        document.getElementById(id).checked = false;
        
    alert(document.getElementById(id).checked);      
}

<input name="x_checker" id="x_checker" value="yes" checked="checked" onclick="on_off('x_checker')" type="radio">



搜索更多相关主题的帖子: false function checked 
2010-08-24 03:35
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:20 
问题就在于,你每次点击Radio时才会触发on_off,而这时你已经点击了Radio,处于选择状态,所以不管如何在执行on_off时document.getElementById(id).checked都是true,走下面的程序时,也自然每次都被设成了false
你可以通过一个变量来进行选择的控制:
   
程序代码:
html:
<input name="x_checker" id="x_checker" onclick="on_off('x_checker')" type="radio">
js:  
    var flag = 0;
    function on_off(id) {
        if (flag) {
            document.getElementById(id).checked = false;
            flag = 0;
        }
        else {
            document.getElementById(id).checked = true;
            flag = 1;
        }
    }

或者,通过点击别的元素触发on_off(),比如再加个<input id="Button1" type="button" value="button" onclick="on_off('x_checker')" /> 也是可以的
2010-08-24 08:29
玲珑八宝
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-8-24
收藏
得分:0 
回复 2楼 foktime
先感谢回复。

我明白了你的意思,你说的对onClick是存在一个顺序问题。

我刚刚试验了你的程序 发现 只要加 alert("Test"); 才可以实现效果:
程序代码:
    var flag = 0;
    function on_off(id) {
        alert(flag);  // 加了这行工作, 不加就没有反应
        if (flag) {
            document.getElementById(id).checked = false;
            flag = 0;
        }
        else {
            document.getElementById(id).checked = true;
            flag = 1;
        }
    }


之后我又试验了一下 将onClick改成onFocus, 结果也是一样, 多加一个alert()就工作, 不加就没有反应, 爆郁闷~!

<input name="x_checker" id="x_checker" value="yes" checked="checked" onfocus="on_off('x_checker')" type="radio">

程序代码:
function on_off(id)
{  

    if(document.getElementById(id).checked == false)
    {
        alert("Select VIP"); // 加了这行工作, 不加就没有反应
        document.getElementById(id).checked = true;
    }
    else if(document.getElementById(id).checked == true)
    {
        alert("unSelect VIP"); // 加了这行工作, 不加就没有反应
        document.getElementById(id).checked = false;
    }
       

}




2010-08-24 13:46
玲珑八宝
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-8-24
收藏
得分:0 
顺便说一句, 我用的是 <script type="text/javascript">
2010-08-24 13:48
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
你的很很牛比居然有这样的特性 !非ALERT不执行?

请问你用的是什么浏览器测试的啊?

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2010-08-24 14:00
玲珑八宝
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-8-24
收藏
得分:0 
解决了 你的程序是没问题的, 经过测试需要配合onClick, onFocus不行

<input  name="x_checker" id="x_checker" value="yes" onClick="on_off()" type="radio">

感谢感谢
2010-08-24 14:49
foktime
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:奥斯维辛
等 级:贵宾
威 望:35
帖 子:795
专家分:2742
注 册:2009-9-4
收藏
得分:0 
我也很是一惊呀...
2010-08-25 08:06
快速回复:一个棘手的JS 问题 求高手!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016320 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved