javascript - 为什么在执行其他函数时会删除函数的第一个元素?
问题描述
解决方案:即使它们看起来是分开操作的,即使它们在不同的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
组号。如果我有错字,我请我的朋友和兄弟帮我重新检查,但找不到。迭代非常简单(至少对我来说,如果可能的话,我接受一个更简单、更快的解决方案)。
解决方案
您能否发布单选按钮的名称属性:#rad0011 和 #rad11。
您可能有一组具有相同属性名称的 8 个单选按钮。#rad00** 列中的 4 个按钮和 #rad** 列中的 4 个按钮
推荐阅读
- excel - 出现错误说明“无法获取 Range 类的 FindNext 属性”
- static-analysis - 如何使用 SonarCloud 检查硬编码的秘密?
- javascript - 如何通过点击链接或使用纯 JavaScript 在外部单击来关闭菜单
- jasperserver - 在不传递用户名和密码或匿名用户的情况下访问 JasperReport
- javascript - 如何等待一个函数完成并使用 graphQL 调用第二个函数
- javascript - document.getElementsByClassName(...) 返回“...不是函数”
- linux - 如何在python中捕获sql文件执行的输出
- google-bigquery - 根据 RECORD(repeated) 类型的列中不存在键来过滤 ROWs 列
- java - 当我们使用无法引用数据框时如何取消持久化
- javascript - 如何检查 Node 中使用了哪个端口