为什么在执行其他功能时删除了该功能的第一个元素?

时间:2018-09-20 17:21:57

标签: javascript jquery

解决方案:即使按钮组名称不同,即使它们似乎单独操作,也不能使用相同的按钮组名称。

我在jQuery中有两个不同的函数,分别称为motivators()barriers()

无论何时执行其中一个功能,它都会在HTML中扫描给定的元素ID,获取值并将其存储在数组中。如果我运行第二个函数,那么它将对不同的数据列执行相同的操作,然后将数据存储在第二个函数中的另一个数组中。

函数radios("motivators or barriers")处理应检查哪个表中的任何数据。

motivators()的代码如下:

function motivators() {
    var motLen = 0;
    var motTotal = 0;

    radios( "motivators" );

    var motivatorsArr = [];

    for ( var i = 1; i <= 17; i++ ) {
        for ( var j = 1; j <= 4; j++ ) {
            var button = $( "#rad" + "" + i + "" + j );
            if ( button . is( ":checked" ) ) {
                motivatorsArr . push( button . val() );
                button . parents( "tr" ) . css( "opacity", "0" ) . delay( 750 ) . hide( 0 );
                motLen++;
            }
        }
    }
    for ( i = 0; i < 16; i++ ) {
        if ( motivatorsArr[ i ] !== undefined ) {
            motTotal += parseInt( motivatorsArr[ i ] );
        }
    }
    console.log("motivators: " + motivatorsArr,motLen,motTotal)
    return {motLen: motLen, motTotal: motTotal};
}

barriers()基本相同,但变量不同

function barriers() {
    var barLen = 0;
    var barTotal = 0;

    radios( "barriers" );

    var barriersArr = [];

    for ( var i = 1; i <= 17; i++ ) {
        for ( var j = 1; j <= 4; j++ ) {
            var button = $( "#rad00" + "" + i + "" + j );
            if ( button . is( ":checked" ) ) {
                barriersArr . push( button . val() );
                button . parents( "tr" ) . css( "opacity", "0" ) . delay( 750 ) . hide( 0 );
                barLen++;
            }
        }
    }
    for ( i = 0; i < 16; i++ ) {
        if ( barriersArr[ i ] !== undefined ) {
            barTotal += parseInt( barriersArr[ i ] );
        }
    }
    console.log("barriers: " + barriersArr,barLen,barTotal)
    return {barLen: barLen, barTotal: barTotal};
}

我需要获取的值是我用1到17进行迭代的单选按钮,一组中的四个按钮是1到4。

基本上,每当我第一次运行两个函数时,第一个函数就会弹出数组的第一个元素,反之亦然。我无法找出给定功能的问题,这使我发疯。

更改一个单选按钮会导致

$( "#motivators input, #barriers input" ).on( "change", function () {
    total();
} );

total()包含另外两个要运行的函数:

function total() {
    var mot = motivators();
    var bar = barriers();
}

尝试使用不同表中的前5个单选按钮组的结果。激励器的前5个按钮,障碍器的前5个按钮,请注意,每次执行功能时,激励器的长度如何减少。的确是另一个方向,如果我使用激励器的5个按钮,则障碍将变为零。 https://kepkuldes.com/images/8c1b260794808153375bfd494c385fa5.png

编辑:

这是单选按钮的代码 激励器单选按钮组11

                    <li>
                        <input type="radio" id="rad111" name="r11" value="0">
                        <label for="rad111"></label>
                    </li>
                    <li>
                        <input type="radio" id="rad112" name="r11" value="2">
                        <label for="rad112"></label>
                        <span class="contLabel"></span>
                    </li>
                    <li>
                        <input type="radio" id="rad113" name="r11" value="5">
                        <label for="rad113"></label>
                        <span class="contLabel"></span>
                    </li>
                    <li>
                        <input type="radio" id="rad114" name="r11" value="15">
                        <label for="rad114"></label>
                        <span class="contLabel"></span>
                    </li>

障碍物无线电台号码11

                    <li>
                        <input type="radio" id="rad00111" name="r11" value="0">
                        <label for="rad00111"></label>
                    </li>
                    <li>
                        <input type="radio" id="rad00112" name="r11" value="2">
                        <label for="rad00112"></label>
                        <span class="contLabel"></span>
                    </li>
                    <li>
                        <input type="radio" id="rad00113" name="r11" value="5">
                        <label for="rad00113"></label>
                        <span class="contLabel"></span>
                    </li>
                    <li>
                        <input type="radio" id="rad00114" name="r11" value="15">
                        <label for="rad00114"></label>
                        <span class="contLabel"></span>
                    </li>

为使组之间有所不同,表单选按钮组之一称为#rad和组号,另一个称为#rad00和组号。我请我的朋友和兄弟为我重新检查我是否有错字,但找不到任何错字。迭代非常简单(如果可能的话,至少对我来说,我接受一个更简单,更快速的解决方案)。

1 个答案:

答案 0 :(得分:0)

您能否发布单选按钮的名称属性:#rad0011和#rad11。

您可能有8个具有相同属性名称的单选按钮组。 #rad00 **列中的4个按钮和#rad **列中的4个按钮