title: retain variable value between function calls javascript
body: <p>I have some variables and i want to retain their values between function calls, Can anyone please share how to do this in javascript. I have tried using global variables but that is not helping. help greatly appreciated, for example in the below code, inside function jump whenever it is called the alerted values are always the same it doesn't increment for every function call. alert(this.prevVal); and alert(this.currentVal);</p>
  
  <pre><code>// We're using a global variable to store the number of occurrences
  var MyApp_SearchResultCount = 0;
  var currSelected = 0;
  var countStr = 0; 
  
  
  
  
  //var prevEl,el;
  
  // helper function, recursively searches in elements and their child nodes
  function MyApp_HighlightAllOccurencesOfStringForElement(element,keyword) {
    if (element) {
      if (element.nodeType == 3) {        // Text node
        while (true) {
          var value = element.nodeValue;  // Search for keyword in text node
          var idx = value.toLowerCase().indexOf(keyword);
  
          if (idx &lt; 0) break;             // not found, abort
  
          var span = document.createElement("span");
          var text = document.createTextNode(value.substr(idx,keyword.length));
          span.appendChild(text);
          span.setAttribute("class","MyAppHighlight");
          span.style.backgroundColor="yellow";
          span.style.color="black";
          text = document.createTextNode(value.substr(idx+keyword.length));
          element.deleteData(idx, value.length - idx);
          var next = element.nextSibling;
          element.parentNode.insertBefore(span, next);
          element.parentNode.insertBefore(text, next);
          element = text;
          window.MyApp_SearchResultCount++;   // update the counter
          //countStr = MyApp_SearchResultCount;   
  
        }
      } else if (element.nodeType == 1) { // Element node
        if (element.style.display != "none" &amp;&amp; element.nodeName.toLowerCase() != 'select') {
          for (var i=element.childNodes.length-1; i&gt;=0; i--) {
            MyApp_HighlightAllOccurencesOfStringForElement(element.childNodes[i],keyword);
          }
        }
      }
    }
  }
  
  // the main entry point to start the search
  function MyApp_HighlightAllOccurencesOfString(keyword) {
  
      alert("test");
  
    //MyApp_RemoveAllHighlights();
    MyApp_HighlightAllOccurencesOfStringForElement(document.body, keyword.toLowerCase());
      alert(window.MyApp_SearchResultCount);  
  }
  
  // helper function, recursively removes the highlights in elements and their childs
  function MyApp_RemoveAllHighlightsForElement(element) {
    if (element) {
      if (element.nodeType == 1) {
        if (element.getAttribute("class") == "MyAppHighlight") {
          var text = element.removeChild(element.firstChild);
          element.parentNode.insertBefore(text,element);
          element.parentNode.removeChild(element);
          return true;
        } else {
          var normalize = false;
          for (var i=element.childNodes.length-1; i&gt;=0; i--) {
            if (MyApp_RemoveAllHighlightsForElement(element.childNodes[i])) {
              normalize = true;
            }
          }
          if (normalize) {
            element.normalize();
          }
        }
      }
    }
    return false;
  }
  
  // the main entry point to remove the highlights
  function MyApp_RemoveAllHighlights() {
    window.MyApp_SearchResultCount = 0;
    MyApp_RemoveAllHighlightsForElement(document.body);
  }
  
  
  function goNext(){
      jump(1);
  }
  function goPrev(){
      jump(-1);
  }
  
  var prevSelected = 0;
  var currSelectedGlo = 0; 
  
  this.prevVal = 0; 
  this.currentVal = 0;
  
  function jump(howHigh){
  
      this.prevVal = this.currentVal; 
      this.currentVal = this.currentVal + 1; 
  
      alert(this.prevVal);
      alert(this.currentVal);
  
  
      prevSelected = currSelected;
      currSelected = currSelected + howHigh;
      //window.currSelectedGlo = currSelected + howHigh; 
      //currSelected = window.currSelectedGlo;
  
      //alert("prevSelected" +prevSelected);
      //alert("window.currSelected "+ currSelected);
  
      //alert(window.MyApp_SearchResultCount);
      //alert(currSelected);
      if (currSelected &lt; 0){  
          currSelected = window.MyApp_SearchResultCount + currSelected;
      }
      if (currSelected &gt;= window.MyApp_SearchResultCount){
          currSelected = currSelected - window.MyApp_SearchResultCount;
      }
  
      prevEl = document.getElementsByClassName("MyAppHighlight")[prevSelected];
      //alert(window.prevEl);
      if (prevEl){
          prevEl.style.backgroundColor="yellow";
      }
      el = document.getElementsByClassName("MyAppHighlight")[currSelected]; 
      el.style.backgroundColor="green";
      el.scrollIntoView(true); //thanks techfoobar
  
  
  
  }
  </code></pre>
  
  <p>Thanks 
  djrecker</p>