J'ai un constructeur d'objet qui contient des variables et une fonction/méthode (?). J'ai plusieurs objets, dont chacun est appelé à l'aide les éléments suivants (numéro d'identification et le point changement pour chacun):Comment ajouter un élément de stockage local à un appel de fonction en utilisant Javascript
document.getElementById("item1").addEventListener("click", item1.apply);
Le nom de l'objet et l'ID sont les mêmes, cette valeur est également ajoutée au stockage local lorsque la fonction est exécuté. En théorie, je veux saisir cette valeur et l'utiliser pour générer/exécuter la même fonction (comme on l'appelle onclick) lorsque la page se recharge.
Cela semble assez simple et je pensais que la concaténation pourrait le faire. Je peux faire [valeur] + [.apply();] pour obtenir "item1.apply();" dans la console, mais je n'arrive pas à le reconnaître/exécuter en tant que fonction. Avant cela est marqué comme une question en double sur la création de fonctions dynamiques, etc - la plupart des threads que j'ai trouvés semblent beaucoup plus compliqué que j'ai besoin. J'ai essayé de travailler avec eux, mais je n'arrive nulle part. Je n'ai pas inclus plus de code, parce que je ne voulais pas compliquer ce qui me semble être un problème relativement simple; Onload obtenir une valeur, ajouter à l'appel de fonction, exécuter. Peut-être y a-t-il une solution simple que je ne vois pas (être débutant et tout)?
Sinon, je suis en espérant que quelqu'un peut me diriger dans la bonne direction, comme je suis bon coincé ...
Merci à l'avance!
Code de travail:
var itemsArray = ["item1", "item2", "item3"];
var currentItem = localStorage.getItem("current", this.value);
if(localStorage.getItem("current") !== null) { // check if local storage item exists
function isMatch(value, index, array) { // run current item thru isMatch
return value == currentItem; // check if returned value matches currentItem
}
var result = itemsArray.filter(isMatch); // this will be the matching item in itemsArray
window[result]["applyIt"](); // use the result to concatenate function call
console.log("show me: " + result[0]); // create a string with it
};
Regroupez le 'itemN' dans un objet et accédez à celui dont vous avez besoin avec une clé:' var items = {"item1": item1, "item2": item2, ...}; 'et ensuite utilisez' items' comme: 'items [" item1 "]. apply'. –
J'ai mis une option comme réponse. Fournissez du code de base [mcve] afin que nous puissions vous aider davantage. – Mouser
Merci beaucoup de revenir à moi !! Assez drôle, j'avais déjà un tableau d'éléments que j'utilisais pour vérifier si l'objet récupéré était valide (je ne sais pas si c'est strictement nécessaire, mais cela semblait être une bonne idée). Je n'avais pas pensé à l'utiliser pour remplir l'appel de fonction, c'était donc un rappel utile. Malheureusement, je ne pouvais pas le faire fonctionner (peut partager des morceaux qui ne fonctionnent pas si vous le souhaitez?). Donc, déplacé sur la solution de Mouser, qui a fonctionné. Je vais modifier ma question initiale pour montrer le résultat et si vous avez d'autres commentaires, n'hésitez pas à partager. Merci encore! – Meanderling