查找特定数字的Javascript脚本
我写了这个小剧本:查找特定数字的Javascript脚本,javascript,html,Javascript,Html,我写了这个小剧本: var a = document.getElementsByTagName('option') for (var i = 0; i < a.length; i++) { var val = a[i].innerHTML.split(' ').join('') if (val == "39") { alert("gg"); } } 要完成此过程: <select name="id" autocomplete="off" class="cust
var a = document.getElementsByTagName('option')
for (var i = 0; i < a.length; i++) {
var val = a[i].innerHTML.split(' ').join('')
if (val == "39") {
alert("gg");
}
}
要完成此过程:
<select name="id" autocomplete="off" class="custom-select">
<option value="-1">Choose size</option>
<option value="32286">37</option>
<option value="32287">37,5</option>
<option value="32288">38</option>
<option value="32289">39</option>
<option value="32290">39.5</option>
<option value="32291">40</option>
<option value="32292">40,5</option>
<option value="32293">41,5</option>
<option value="32294">42</option>
</select>
看看是否有任何innerHTML正好等于39,如果是,请提醒我
但由于某些原因,它不起作用。
我觉得一切都很好。我做错了什么?您的代码正在寻找正好3个空格进行拆分,并且由于您的源代码显示的每个选项都有3个以上的空格,因此在您执行操作后仍有剩余的空格。这意味着val仍将包含空格,并且代码假定所有空格都已删除 您可以使用以下命令删除所有空格:
var val = a[i].innerHTML.replace(/\s+/g);
或者,您可以使用.trim string方法删除前导空格和尾随空格,但删除所有不必要的空格。只需检查textContent not.innerHTML,因为您正在尝试使用indexOf读取选项元素的任何HTML,它查看整个字符串并返回找到的字符串的索引位置,如果找不到字符串,则返回-1
作为一个补充说明,为什么您的选项元素一开始就有那么多空格呢
var a=document.getElementsByTagName'option'
对于var i=0;ival似乎包含带空格的字符串,您可以在检查之前使用trim删除这些字符串
var a = document.getElementsByTagName('option')
for (var i = 0; i < a.length; i++) {
var val = a[i].innerHTML.split(' ').join('')
if (val.trim() == "39") {
alert("gg");
}
}
尝试使用-这将保持您对值的要求正好为39
你可以这样做,但这是额外的不必要的工作。只需使用indexOf.@ScottMarcus,如果字符串发生变化并包含39,比如390,那么这将是错误的。这是正确的。我的工作假设测试字符串是精确和唯一的,毕竟,两个选项具有相同的值或测试一个不是您想要的值是没有意义的。您可以这样做,但这是额外的不必要的工作。只需使用indexOf。@ScottMarcus indexOf也将匹配39,5,这是正确的。我的工作假设测试字符串是精确且唯一的,毕竟,两个选项具有相同的值或测试一个不是您想要的值是没有意义的。
var a = document.getElementsByTagName('option');
for (var i = 0; i < a.length; i++) {
if (a[i].innerHTML.trim() === "39") {
alert("gg");
}
}