我无法弄清楚问题在这里。当我在IF语句中使用'#account-funding - '+ i 但它与'#account-funding-0'一起使用时,它不起作用。我需要能够遍历未知数量的对象数组。我做错了什么?
HTML *页面上可以有X个.funding-content div。带-0的每个ID都将从js
递增<form id="accountform" name="accountForm">
<div class="funding-content funding-selected-0">
<div class="container">
<h3>Funding for [account selected]</h3>
<div class="funding-type-transfer" id="funding-type-transfer-0">
<div class="form-inputs">
<div class="lx-grid lx-grid--gutters">
<div class="lx-grid__cell lx-grid__cell--1-2--above-md">
<label for="account-funding-0">Routing Number</label>
<input id="account-funding-0" type="text" maxlength="9">
</div>
</div>
</div>
</div>
</div>
</div>
</form>
不起作用:
var amountOfAccounts = $( '#account-form .funding-content' ).length;
for ( i = 0; i <= amountOfAccounts; i++ ) {
if ( $( '#account-funding-'+i ).val() == '' ) {
document.getElementById( 'account-funding-'+i ).setCustomValidity( 'Routing Number is a required field.' );
}
}
使用:
var amountOfAccounts = $( '#account-form .funding-content' ).length;
for ( i = 0; i <= amountOfAccounts; i++ ) {
if ( $( '#account-funding-0' ).val() == '' ) {
document.getElementById( 'account-funding-'+i ).setCustomValidity( 'Routing Number is a required field.' );
}
}
答案 0 :(得分:3)
显然,索引与某个元素不匹配。但是,你不需要像这样做。 JQuery提供了一个 .each()
方法来遍历对象,因此您不必担心任何这些:
$( '#account-form .funding-content' ).each(function(index, element){
if(element.val() !== ""){
// Do something
}
});
答案 1 :(得分:1)
如果我理解正确,你在循环中没有得到正确的id
?
如果是,则将您的循环变量设置为let
,因此对于此循环,它不会被提升并且是块范围。
此外,要循环使用正确数量的元素,请使用<
代替<=
。
看看这对你有帮助。 (或者我理解它完全错了,如果是这样,我可以做一些调整或删除这个答案)
var amountOfAccounts = $('#account-form .funding-content').length;
for (let i = 0; i < amountOfAccounts; i++ ) {
var elemValue = $( '#account-funding-'+i ).val();
if ( elemValue == '' || elemValue == null) {
console.log('empty value');
}else{
console.log(elemValue);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="account-form">
<input value="abc" class='funding-content' id="account-funding-0">
<input value="" class='funding-content' id="account-funding-1">
<input value="def" class='funding-content' id="account-funding-2">
<input value="" class='funding-content' id="account-funding-3">
</div>