简体   繁体   中英

Am I using indexof correctly?

I'm trying to use indexof to tell me if a string appears on page.

The function below should cycle through all checkboxes (name="comment") in my form checking for each checkbox's value within the rest of the document (only because I can't figure out how to search just one span). If the string value is found to exist elsewhere on the page, that checkbox will change css style.

function loop() {

var comment=document.forms[0].comment;
var ii;

for (ii=0;ii<comment.length;ii++)  {
    str=comment[ii].value;
    id = comment[ii].id;

if(document.body.innerHTML.toString().indexOf(str) !=-1)
{
  document.getElementById(id).style.visibility = "hidden";
        }
    }
}

The result is that all checkboxes turn "hidden". I thought the problem was the checkbox finding its own value in the HTML, but the same happens when I search for nonsense.

Am I using indexof incorrectly? Can anyone point out how and where? I don't want to use window.find.

To elaborate: Checkbox 1 value is "A IS FOR APPLE". Check the page for the string "A IS FOR APPLE". If found, make checkbox 1 hidden. Go to checkbox 2 and repeat.

If I understood what are you trying to do, I think a better approach should be something like this:

function loop() {

  var inputs = document.getElementsByTagName("input");
  var span = document.getElementsById("txtHint");

  for(var i = 0; i < inputs.length; i++) {
    //Let's check only the checkbox with the name comment
    if(inputs[i].name == "comment" && inputs[i].value == span.innerText) {
          inputs[i].style.visibility = "hidden";
    }  
  }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM