首页 > 解决方案 > 为什么在执行其他函数时会删除函数的第一个元素?

问题描述

解决方案:即使它们看起来是分开操作的,即使它们在不同的ID下,也不能使用相同的按钮组名称。

我在 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组号。如果我有错字,我请我的朋友和兄弟帮我重新检查,但找不到。迭代非常简单(至少对我来说,如果可能的话,我接受一个更简单、更快的解决方案)。

标签: javascriptjquery

解决方案


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

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


推荐阅读