Javascript脚本查找特定号码

时间:2017-06-27 21:28:00

标签: 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="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 个答案:

答案 0 :(得分:1)

尝试使用trim() - 这将保持您对完全 39的值的要求。

var a = document.getElementsByTagName('option');
for (var i = 0; i < a.length; i++) {
  if (a[i].innerHTML.trim() === "39") {
    alert("gg");
  }
}

答案 1 :(得分:0)

您的代码正在查找要拆分的3个空格,并且由于您的源代码显示每个option有多于3个空格,因此在您执行操作后仍有剩余空间。这意味着val仍将包含空格,并且您的代码假定已删除所有空格。

您可以删除所有空格:

var val = a[i].innerHTML.replace(/\s+/g);

或者,您可以使用.trim()字符串方法删除前导和尾随空格,但根本不需要。只需使用textContent检查.innerHTML元素的option(不是indexOf(),因为您尝试读取任何HTML),-1查看整个字符串并返回索引位置如果找不到字符串,则找到字符串或option

作为旁注,为什么你的var a = document.getElementsByTagName('option') for (var i = 0; i < a.length; i++) { // Just check the contents of the element to see if the specified string exists in it if (a[i].textContent.indexOf("39") > -1) { 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>
prepare

答案 2 :(得分:0)

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");
  }
}