Bruno
Bruno

Reputation: 9027

Bug in javascript function

I've got a bug when I'm using a javascript function : my function displays the content of a div element but when I uncomment some code it doesn't work anymore. Someone has any idea why ?

    function traverse(){
        var root=document.getElementById('tree0').childNodes;
        for(var i=0;i<root.length;i++) {
                var lis = root[i];
                var number =0;
                for (var member in lis) {
                    output.innerHTML+=lis[member];
                    /*var assertion = lis[member];
                    var result = assertion.indexOf("Bookmarks menu");
                    if(result != -1) {
                       output.innerHTML+='Test';
                    }*/

                 }
         }
     }

thanks,

Bruno

Upvotes: 0

Views: 106

Answers (3)

mplungjan
mplungjan

Reputation: 177786

You may get more that you expect when you do for ... in ...

Is THIS what you want? http://jsfiddle.net/bM9Bn/

<div id="tree0">
  <div id="bla">
    bla
  </div>
  <div id="Bookmarks menu">
    Bookmarks Menu
  </div>
</div>
<hr />
<div id="output"></div>
<script>
var output = document.getElementById("output")
function traverse(){
  var root=document.getElementById('tree0').childNodes;
  for(var i=0;i<root.length;i++) {
    var lis = root[i];
    var number =0;
    for (var member in lis) {
//      output.innerHTML+="["+member+":"+lis[member]+"]";
      if (member == "id" || member == "textContent") {
        output.innerHTML+="["+member+":"+lis[member]+"]";
        var assertion = lis[member];
        // the typeof test not needed if we only process textContent and ID
        if (typeof assertion == "string") { 
          var result = assertion.indexOf("Bookmarks menu");
          if(result != -1) {
            output.innerHTML+='<span style="color:red">Test</span>';
          }
        }
      }
    }
  }
}
traverse()
</script>     

Upvotes: 4

mylesmg
mylesmg

Reputation: 532

You are checking the 'result' variable, but setting the 'resultat' variable. Try using resultAt in the conditional, and I think it will work for you.

Upvotes: 0

Jeff Fuller
Jeff Fuller

Reputation: 1

Just looking quickly- var and if statement should both us resultat?

var resultat = assertion.indexOf("Bookmarks menu"); if(result*at* != -1) {

Upvotes: 0

Related Questions