Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找特定数字的Javascript脚本_Javascript_Html - Fatal编程技术网

查找特定数字的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;i-1{ alertgg; } } 选择大小 37 37,5 38 39 39.5 40 40,5 41,5 42
val似乎包含带空格的字符串,您可以在检查之前使用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");
  }
}