javascript - 根据选择框值限制javascript切换

标签 javascript jquery html css

这是我当前 fiddle 的链接

jsFiddle

JS--

$('.click').on({
    'click': function () {

        var origsrc = $(this).attr('src');
        var src = '';
        if (origsrc == 'http://imageshack.us/a/img703/8236/l6hu.png') src = 'http://imageshack.us/a/img20/1651/fibz.png';
        if (origsrc == 'http://imageshack.us/a/img20/1651/fibz.png') src = 'http://imageshack.us/a/img703/8236/l6hu.png';

        $(this).attr('src', src);

    }
});

我可以在点击时切换图片和另一张图片,反之亦然。这没关系,但我只想在已经选择绿色图像时限制切换。如果我从选择框中选择 3,那么我只能将白色图像切换为绿色图像 3 次,不超过 3 次。我还需要另一个场景的帮助 - 如果我从选择框中选择 3 并切换前 3 个图像,下一刻我改变第二张图片变成白色,点击第五张图片变成绿色就可以了。我在 javascript 或 jquery 上一周,所以需要有关此问题的适当信息。所以请帮助我。

最佳答案

这里有一个更全面的方法fiddle这将使您的限制保持同步并在限制更改时处理差异。

var quantity = 0; // will maintain limit    
var stack = []; // will maintain ordered green buttons
$("#select").change(runWrapper);
function runWrapper() {
  quantity = Number($("#select").val()); // set the limit
  groom();  // turn off those that were turned on last
  //run();  // this is your run function, uncomment 
}
function groom(){
    // let's test if we are over the limit
    while(stack.length > quantity) {
        // remove last which was set to green
        $(stack.pop()).trigger("click")

        // to remove the oldest/first set to green use
        //  $(stack.shift()).trigger("click")
    }
}
$('.click').on({
    'click': function () {

            var origsrc = $(this).attr('src');
            var src = '';
        if (origsrc == 'http://imageshack.us/a/img703/8236/l6hu.png') {
            // limit reached
            if(stack.length >= quantity) {
                alert(quantity + " limit reached!");
                return;
            }
            src = 'http://imageshack.us/a/img20/1651/fibz.png';

            // turning green push the DOM reference to the top of the stack
            stack.push(this);
        }
        if (origsrc == 'http://imageshack.us/a/img20/1651/fibz.png') {
            src = 'http://imageshack.us/a/img703/8236/l6hu.png';
        // turning white remove the DOM reference from stack
            var self = this;
            stack = $.grep(stack, function(val) {
               return self != val;     
            })
            console.warn(stack);
        }
       $(this).attr('src', src);

    }
});

关于javascript - 根据选择框值限制javascript切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669139/

相关文章:

javascript - 在应用 CSS 和 Javascript 之前,如何防止导航呈现为列表?

javascript - 视频流通过 Websocket 到 <video> 标签

javascript - 使用 javascript 和 jquery 更改 div 的样式

javascript - 无法使递归淡入、切换、显示正常工作

html - 显示不裁剪和可见滚动条的 div 内容

javascript - 将 php 作为 "return value"回显到 ajax 调用

javascript - 如何使用 Greasemonkey 编辑 Reddit 导航栏?

javascript - 获取当前日期,将字符串解析为日期并比较日期

html - 开始我的第一个元素(寻找批评、一般提示、仇恨)

jquery - 我的 css 下拉菜单在 Internet Explorer 和 Firefox 上显示在错误的位置