Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как передать this на setTimeout? (https://javascript.ru/forum/events/39272-kak-peredat-na-settimeout.html)

Max_Cohen 23.06.2013 14:07

Как передать this на setTimeout?
 
Привет!

Встал вопрос такого рода: как передать id, на setTimeout?

Не большой код для лучшего понимания:
HTML:
<span id="text">Hello</span>
<button onclick="hide();">Hide</button>

JS:
function hide(){
var a_span=document.getElementById("text");
setTimeout("a_hide_text("+a_span+");", 3333);
}

function a_hide_text(id){
id.innerHTML = "";
}


Как-то. Если можно организовать по другому, пишите. Я знаю только основу JS.
Спасибо.

vadim5june 23.06.2013 14:21

я бы так написал
function hide(){
setTimeout(function(){document.getElementById("text").innerHTML=''}, 3333);
}

рони 24.06.2013 01:08

Max_Cohen,
function hide(){
var a_span=document.getElementById("text");
setTimeout( function ()
{
  a_hide_text(a_span)
}, 3333);
}

danik.js 24.06.2013 06:44

Не работает в старых браузерах, в том числе IE8.
function hide(){
var a_span=document.getElementById("text");
setTimeout(a_hide_text.bind(this, a_span), 3333);
}

danik.js 24.06.2013 06:53

А еще есть такой вариант. Но он не работает даже в IE9.
function hide(){
var a_span=document.getElementById("text");
setTimeout(a_hide_text, 3333, a_span);
}


Экстра-параметры были введены в HTML5 спецификации.

skrudjmakdak 24.06.2013 16:52

замыкания рулят


Часовой пояс GMT +3, время: 16:26.