我写了这个小剧本:
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,如果是的话就提醒我。
但由于某种原因,它无法正常工作。 这对我来说都很好看。我做错了什么?
答案 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");
}
}