title: Cannot read property 'substring' of undefined after putting the line in setTimeout
body: <p>I checked the console in the browser very carefully.<br>
  This line:  </p>
  
  <pre><code>document.getElementById("role_show_" + $(this).attr("id").substring(7, 9)).style.display = "block";
  </code></pre>
  
  <p>is executed normally. But when I put it in a <code>setTimeout</code> like this:  </p>
  
  <pre><code>setTimeout(function() {
      document.getElementById("role_show_" + $(this).attr("id").substring(7, 9)).style.display = "block";
  }, 400);
  </code></pre>
  
  <p>The console displays this error:<br>
  <code>Uncaught TypeError: Cannot read property 'substring' of undefined
  </code></p>
  
  <p>What is going on here? I am sure that all the other lines of code are unedited.</p>