我正在学习JavaScript,并花了一整天时间,希望您能为我提供帮助^^
我有X个选择元素,如下所示:
<select class="custom-select select-group mb-3" id="name_typage_0">
<option class="select-items" value="" selected>Sélectionnez..</option>
<option class="select-items" value="designation">Désignation</option>
<option class="select-items" value="email">Email</option>
<option class="select-items" value="ville">Ville</option>
<option class="select-items" value="activite">Secteur Activité</option>
</select>
当我在每个X元素中选择一个选项时,除了第一个“Sélectionnez..”外,我需要增加一个。选择这个时,我需要-1。
我的问题是,当我在同一选择中选择“电子邮件”然后选择“ Ville”时(假设我改变了主意),当我需要+1时,它就会给我+2。
我正在使用Vanilla JavaScript,希望您不用Jquery就可以帮助我。 我将向您展示我对这种大而简单的失败所做出的最后一次尝试
编辑:显然我的摘要不清楚,我将添加一些信息^^
但(这是我的问题),如果用户改变了主意并在选择A中选择了另一个选项,我不希望count =2。它必须保持count =1。< / p>
selects.forEach((item) => {
item.addEventListener('change', (event) => {
let comptTest = [];
if(item.options[item.selectedIndex].text === 'Sélectionnez..'){
count = -1;
}
if(item.options[item.selectedIndex].text !== 'Sélectionnez..'){
if(comptTest.includes('lundi')){
count = 0;
}else{
count = +1;
comptTest.push('lundi');
}
}
total += count;
});
});
答案 0 :(得分:1)
首先,这仅在select
元素是页面上的第一个或唯一元素时才有效。最好尽可能地通过ID进行跟踪,因为ID应该是唯一的...或者您可以使用querySelectorAll并遍历结果数组。我想使事情尽可能简单,所以假设页面上有一个select
元素,我将使用select
选择器,如下所示:
var count = 0;
var select = document.querySelector('select');
select.addEventListener('change', function(e) {
if (e.target.value === "Sélectionnez") {
count += 1;
console.log(count);
}
});
<select>
<option class="select-items" value="Other">Other</option>
<option class="select-items" value="Sélectionnez">Sélectionnez..</option>
</select>
注意:我将value =“Sélectionnez”添加到该选项中,以便跟踪选择了哪个选项。最佳做法是对每个option
执行此操作。该值不必与文本节点匹配。
遍历多个选择元素:
var count = 0;
var select = document.querySelectorAll('select');
select.forEach(elem => {
elem.addEventListener('change', function(e) {
if (e.target.value === "Sélectionnez") {
count += 1;
console.log(count);
}
});
});
<select>
<option value="Other">me</option>
<option value="Sélectionnez">Sélectionnez</option>
</select>
<select>
<option value="Other">me</option>
<option value="Sélectionnez">Sélectionnez</option>
</select>
答案 1 :(得分:1)
尝试一下...
JS (带有Jquery)
$('select').change(function() {
var nbr = 0;
$('select').each(function() {
if( $(this).val() !== '' ) nbr++;
});
$('#elementNbr').html(nbr);
});
HTML
<div>
<span id="elementNbr">0</span> / 3 element(s) select !
</div>
<select class="custom-select select-group mb-3" id="name_typage_0">
<option class="select-items" value="" selected>Sélectionnez..</option>
<option class="select-items" value="designation">Désignation</option>
<option class="select-items" value="email">Email</option>
<option class="select-items" value="ville">Ville</option>
<option class="select-items" value="activite">Secteur Activité</option>
</select>
<select class="custom-select select-group mb-3" id="name_typage_0">
<option class="select-items" value="" selected>Sélectionnez..</option>
<option class="select-items" value="designation">Désignation</option>
<option class="select-items" value="email">Email</option>
<option class="select-items" value="ville">Ville</option>
<option class="select-items" value="activite">Secteur Activité</option>
</select>
<select class="custom-select select-group mb-3" id="name_typage_0">
<option class="select-items" value="" selected>Sélectionnez..</option>
<option class="select-items" value="designation">Désignation</option>
<option class="select-items" value="email">Email</option>
<option class="select-items" value="ville">Ville</option>
<option class="select-items" value="activite">Secteur Activité</option>
</select>
答案 2 :(得分:1)
我正在使用Vanilla JavaScript
document.querySelectorAll('.custom-select').forEach((item) => {
item.addEventListener('change', (event) => {
let count = 0;
document.querySelectorAll('.custom-select').forEach((SelectElem) => {
if(SelectElem.value != '') count++;
});
document.querySelector('#elementNbr').textContent = count;
});
});
最诚挚的问候