Pergunta

Aqui está o problema - eu sei função pelo nome (e que a função já foi formulário carregado um script externo), mas eu não tenho um sucesso função de objeto real para me chamar. Normalmente eu chamaria eval (function_name + "(arg1, arg2)"), mas no meu caso eu preciso passar um objeto para ele, não uma string. Exemplo simples:

var div = document.getElementById('myDiv')
var func = "function_name" -- this function expects a DOM element passed, not id

Como faço para executar esta função?

Obrigado! Andrey

Foi útil?

Solução

Você deve ser capaz de obter o objeto de função do window de nível superior. Por exemplo.

var name = "function_name";
var func = window[name];
func( blah );

Outras dicas

Nunca use eval, IT'S mal (ver diferença apenas uma carta) Você pode simplesmente fazer:

var div = document.getElementById('myDiv');
var result = window[function_name](div);

Isto é possível porque as funções são objetos de primeira classe em javascript, para que possa acces-los como você poderia com anyother variável. Note que isto irá também trabalho para funções que querem cordas ou qualquer coisa como paramter:

var result = window[another_function_name]("string1", [1, "an array"]);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top