Javascript jQuery+测试元素值(扩展)

Javascript jQuery+测试元素值(扩展),javascript,jquery,html,object,Javascript,Jquery,Html,Object,所以,我有一个正在编辑的结构,它涉及一个名为bulk的Javascript对象 我有一些bug,但我觉得我做了太多DOM操作。问题是jQuery中的硬编码值 我不会在这里发布所有代码,但我关心的是: 如果有兴趣,请在此小提琴中输入完整代码- 让我列出基本参数,这样才有意义: 你的容量是10。 当您选择复选框时,它将在逻辑上标识哪些复选框是可承受的,并禁用那些不可承受的。 如果未选中该复选框,还需要删除禁用状态。 速度计数器在1-4层的基础上将我们的总容量更改-/+1。 用户界面体验需要通信的速度

所以,我有一个正在编辑的结构,它涉及一个名为bulk的Javascript对象

我有一些bug,但我觉得我做了太多DOM操作。问题是jQuery中的硬编码值

我不会在这里发布所有代码,但我关心的是:

如果有兴趣,请在此小提琴中输入完整代码-

让我列出基本参数,这样才有意义:

你的容量是10。 当您选择复选框时,它将在逻辑上标识哪些复选框是可承受的,并禁用那些不可承受的。 如果未选中该复选框,还需要删除禁用状态。 速度计数器在1-4层的基础上将我们的总容量更改-/+1。 用户界面体验需要通信的速度和容量。 我已经编写了一个函数来实现这一点,但我觉得DOM似乎被我的代码操纵得太多了

有人能帮我把这个过程统一成一个单一的函数,根据我描述的值检查/更新DOM吗

PC=功率容量 速度=字符速度的速度 以下是我尝试过的一些代码:

数据结构: 尝试函数 我应该继续使用它并测试每一个值,然后将其放入我以后的函数中,还是有更简单的方法来实现这一点

目标是编写一个函数来测试一些事情:

如果bulk.pc无法提供复选框['data-pc'],请在未选中的情况下禁用该复选框。 如果bulk.speed为1,则禁用remSpeed按钮 如果bulk.speed为4,请禁用addSpeed按钮 所有这些都是有效的,只需要知道如何将其组合成单个函数

我在考虑一个参数困难的开关箱,但我希望有更好的选择

如果有兴趣,请在此小提琴中输入完整代码-

PS:我希望有人能看看小提琴,轻松地把它组合成一个单一的功能


VALUES/DISABLE/ENABLE.

经过深思熟虑和一夜的休息,我想出了一个主DOM函数,它似乎可以完美地工作

真遗憾,我没有早点想到这件事。我遇到的问题是将所有内容映射到if/else if/else语句。正因为如此,它产生了bug,如果其中一个测试恢复有效,就不会启动所有测试

没有进一步拖延,解决办法是:

完整代码如下: 现在我的数据结构正常工作了,我可以编写代码的其余部分来操作对象,而不用考虑分散在代码中的DOM操作的静态值

完整代码如下:
var bulk = {
    speed: 1,
    damage: 0,
    type: 'P',
    statEf: [],
    health: 0,
    minion: [0],
    pc: 10,
    exp: 9000
};
// CORE UPDATE FUNCTION FOR VALUES / DISABLE / ENABLE
$(':checkbox, input[type="button"]').on('click', function() {
    if(bulk.pc <= 1){
        $('#addSpeed').attr('disabled', 'disabled');
        $('#remSpeed').removeAttr('disabled');
    } else if(bulk.speed > 2){
        $('#remSpeed').removeAttr('disabled');
    }
    if(bulk.pc <= 1 && bulk.pc !== 4){
        $('#remSpeed').removeAttr('disabled');
        $('#addSpeed').removeAttr('disabled');
    }
});
function updateDom(){
    if(bulk.pc < 1 || bulk.speed >= 4){
        $('#addSpeed').attr('disabled', 'disabled');
    }
    if(bulk.speed <= 1){
        $('#remSpeed').attr('disabled', 'disabled');
    }
    if(bulk.speed > 1){
        $('#remSpeed').removeAttr('disabled');
    }
    if(bulk.speed < 4 && bulk.pc > 0){
        $('#addSpeed').removeAttr('disabled');
    }
    $(":checkbox").each(function() {
        if($(this).data('pc') > bulk.pc && $(this).prop('checked')==false){
            $(this).attr('disabled', 'disabled');
        } else if ($(this).data('pc') <= bulk.pc) {
            $(this).removeAttr('disabled');
        }
    });
    for (var key in bulk) {
        $('#' + key).text(bulk[key]);
    };
}
// ADD SPEED FUNCTION
$('#addSpeed').on('click', function() {
    bulk.speed += 1;
    bulk.pc -= 1;
    updateDom();
});

// REDUCE SPEED FUNCTION
$('#remSpeed').on('click', function() {
    bulk.speed -= 1;
    bulk.pc += 1;
    updateDom();
});