Comment passer de l'objet en tant que paramètre dans le Javascript?
J'ai trouvé quelques questions ici concernant ma question, mais n'a pas exactement obtenir la réponse que je cherchais. Je suis désireux de faire quelque chose comme cela, semblable à ce que jQuery n'est souvent:
createCSS("mystyle.css", {
media: "screen",
type: "text/css"
});
J'ai essayé d'accomplir ce que je veux, mais ça ne fonctionne pas:
var prop = {
media: '',
type: ''
};
function createCSS(href, prop) {
var anchor = document.createElement("link");
anchor.setAttribute("href", href);
anchor.setAttribute("media", prop.media);
anchor.setAttribute("type", prop.type);
if(typeof anchor != "undefined") {
document.getElementsByTagName("head")[0].appendChild( anchor );
}
}
Maintenant, je sais que je pourrais juste créer unique de plusieurs paramètres comme la createCSS("mystyle.css", "screen", "text/css");
mais je n'aime pas que l'autre semble plus frais.
Plein de nouveaux javascript sorte que toute aide serait grandement appréciée!
Avez-vous essayé de simplement éliminer le var prop = { ... } déclaration? Et de tester si tout le reste fonctionne...
OriginalL'auteur ModernDesigner | 2013-02-01
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas à déclarer/initialiser
var prop
. Votre fonction a l'air bien, il vous suffit d'appeler passage d'un objet commeprop
, comme dans votre exemple:Si l'intention avec la
var prop
partie était d'éviter d'attribuer desundefined
pour les attributs, vous avez besoin d'un peu de tweak l'intérieur de la fonction:Quelques améliorations mineures que je vous suggère:
anchor
ne contient pas un point d'ancrage (<a>
) de l'élément. Pourquoi ne pas l'appelerlink
?if(typeof anchor != "undefined")
conditionnelle. puisque vous êtes en train de créer l'élément quelques lignes ci-dessus, cette variable ne sera jamais défini. Vous pouvez ignorer lesif
etappendChild
directement.prop.media
etprop.type
rendrait pas défini. Merci!vous pouvez prédéfinir
prop
, mais dans ce cas, n'oubliez pas de l'inclure dans l'appel:createCSS("mystyle.css", prop)
Vous avez déjà eu et ne le savais pas :). Aussi: j'ai juste ajouté un couple de suggestions qui peuvent vous aider à améliorer votre code.
wow! Merci. Je l'aime. Et merci de me laisser savoir à propos de l'inutile instruction conditionnelle. Je l'ai trouvé par renifler en ligne et n'ai pas vraiment aimé les regards de toute façon. De bonnes suggestions, trop.
OriginalL'auteur bfavaretto
"J'ai essayé d'accomplir ce que je veux, mais cela ne fonctionne pas"
La façon dont vous passez votre objet est bien. Bien qu'il existe des choix intéressants dans la fonction, il fait ce que vous demandez. Cependant, avez-vous inspecté le lien que vous créez? Il manque de la
rel
directive, qui est une exigence.Vous souhaitez modifier votre fonction:
rel
Merci! Il m'a fallu 10 minutes pour comprendre pourquoi
test.css
ne fonctionnait pas, et c'était à cause de larel
. +1OriginalL'auteur Travis J