Domanda

Ecco il problema - lo so funzione per nome (e che la funzione è già stata caricata forma uno script esterno), ma non ho un profitto reale funzione di oggetto per me di chiamare. Normalmente io chiamerei eval (function_name + "(arg1, arg2)"), ma nel mio caso ho bisogno di passare un oggetto ad esso, non è una stringa. Semplice esempio:

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

Come faccio a eseguire questa funzione?

Grazie! Andrey

È stato utile?

Soluzione

Si dovrebbe essere in grado di ottenere l'oggetto funzione dal window di livello superiore. Per es.

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

Altri suggerimenti

Non usare mai eval, vale la male (vedere la differenza una sola lettera) Si può semplicemente fare:

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

Questo è possibile perché le funzioni sono oggetti di prima classe in JavaScript, in modo da poterli acces come si potrebbe con ogni altro variabile. Si noti che questo funziona anche per le funzioni che vogliono stringhe o nulla come paramter:

var result = window[another_function_name]("string1", [1, "an array"]);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top