javascript - 新手js:操作其他相同的form跟第一个form一样
天蓬老师
天蓬老师 2017-04-10 15:06:48
[JavaScript讨论组]

picon跟on的样式一样,on是显示出来,picon是隐藏。

问题就是:我实现了第一个form的功能,js代码在最下边,但只是第一个,我想其他form也都是这种功能,尝试了事件代理,感觉还是无力,求教大神:)

  • Paul Smith 灰色格子西服三件套 18100.00RMB

    尺码: M L XL

    数量: - +

    三件套西装

    三件套西装....

  • RICHARD JAMES 蓝色羊毛西装外套 3760.00RMB

    尺码: M L XL

    数量: - +

    毛呢西装

    毛呢西装....

  • Hackett London镂空圆形短檐皮环草帽 464.25RMB

    尺码: M L XL

    数量: - +

    草帽

    草帽...

  • IMMY CHOO 皮靴 1809.74

    尺码: 41 42 43

    数量: - +

    马靴

    如今....

var num = document.getElementsByClassName('size')[0];
var picon1 = num.getElementsByTagName('img')[0];
var picon2 = num.getElementsByTagName('img')[1];
var picon3 = num.getElementsByTagName('img')[2];

var num1 = num.getElementsByClassName('num1')[0];
var num2 = num.getElementsByClassName('num2')[0];
var num3 = num.getElementsByClassName('num3')[0];

var count = document.getElementById('count');
var countNum = count.getElementsByTagName('input')[0];
var add = count.getElementsByClassName('add')[0];
var reduce = count.getElementsByClassName('reduce')[0];

num1.onclick = function(){
    picon1.className = "picon_on";
    picon2.className = "picon";
    picon3.className = "picon";}
num2.onclick = function(){
    picon2.className = "picon_on";
    picon1.className = "picon";
    picon3.className = "picon";
}
num3.onclick = function(){
    picon3.className = "picon_on";
    picon2.className = "picon";
    picon1.className = "picon";
}
add.onclick = function(){
    var value = parseInt(countNum.value);
    countNum.value = value + 1;
}
reduce.onclick = function(){
    if(countNum.value > 0){
        var value = parseInt(countNum.value);
        countNum.value = value - 1;
    }
}
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(2)
伊谢尔伦

题主,你好。建议了解下DOM节点的相关知识,可能会对你有帮助噢^-^

为了方便获取最外层的goods节点对象,我给它加了个id

<p class="goods" id="goods">

绑定事件代码

var goodsEle = document.getElementById('goods')

goodsEle.addEventListener('click', function(e) {
    var target = e.target

    if (target.nodeName.toUpperCase() === 'SPAN')  {
        var inputEle = target.parentNode.getElementsByTagName('input')[0],
            value    = parseInt(inputEle.value)

        value = target.className === 'add' ? value + 1 : value
        value = target.className === 'reduce' ? value -1 : value

        return inputEle.value = value
    }

    if (target.nodeName.toUpperCase() === 'IMG') {
        var aEle = target.parentNode, // 获取img的父节点,也就是a元素
            pEle = aEle.parentNode, // a元素的父节点p元素
            imgList = pEle.getElementsByTagName('img') // p元素下面的所有个img元素

        for (var i = 0, ii = imgList.length; i < ii; i++) {
            imgList[i].className = 'picon'
        }

        return target.className = 'picon_on'
    }
})

Over~

伊谢尔伦
===大概是这样的====
$('p.size').delegate("a.size_num","click",function(){
       if($(this).hasClass("num1")){
           picon2.className = "picon_on";
           picon1.className = "picon";
           picon3.className = "picon";
       }else if($(this).hasClass("num2")){
        picon2.className = "picon_on";
        picon1.className = "picon";
        picon3.className = "picon";
       }else if($(this).hasClass("num3")){
            picon3.className = "picon_on";
            picon2.className = "picon";
            picon1.className = "picon";
       }

});
$('p.count').delegate("span.add","click",function(){
    var value = parseInt(countNum.value);
    countNum.value = value + 1;
});

$('p.count').delegate("span.reduce","click",function(){
   if(countNum.value > 0){
        var value = parseInt(countNum.value);
        countNum.value = value - 1;
    }
});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号