En javascript, y a-t-il une différence entre l'utilisation
element.style.setAttribute('width', '150px');
et
element.style.width = '150px';
?
J'ai vu que les mots clés ne fonctionneraient pas avec la première méthode (comme this ), mais pour les attributs non-mots clés, y a-t-il une différence?
Les deux sont parfaitement valables. Pouvez-vous donner quelques exemples qui ne fonctionnent pas en second lieu? Êtes-vous conscient que les noms d'attributs doivent d'abord être camelcased? Par exemple. element.style.marginTop
au lieu de incorrectement element.style.margin-top
. Le trait d'union est à savoir un identifiant invalide en Javascript.
Le seul changement que j'ai vu concerne la toile. Mais alors, étant donné un élément, quelle est la différence entre
element.width = '100px'
element.style.width = '100px'
element.setAttribute('width','100px')
element.style.setAttribute('width','100px')
Puisque je n'ai pas trouvé la réponse d'un expert, je dirai ceci seulement par expérience.
width est une propriété exposée de l'élément, comme dans un objet car.color = 'red'; setAttribute('color','red')
est une fonction qui attribue la valeur à une propriété comme dans car = {color:'red',setAttribue:function(prop,val){this[prop]=val;}
Vu comme un prototype de fonction serait
function element(){
this.color='blue' // default
this.setAttribute = function(prop, val){ this[prop]=val;}
}
car = new element()
car.color = 'red';
or
car.setAttribute('color','red');
Maintenant, le style est un cas particulier, où disons, c'est comment les choses sont affichées d'une manière transformée, pas son original. Un style ne changera pas la propriété elle-même et c'est l'effet que vous voyez maintenant dans le canevas, comme c'était le cas auparavant dans les images qui ont trop une valeur de hauteur de largeur
Comment c'est? imaginez que vous avez une figure de 100x100 pixels d'origine, la balise de la figure aurait des paramètres pour la hauteur largeur 100x100px, (même cas avec la toile) puis par style, vous modifiez la hauteur de largeur à 200x200px la même image s'agrandira pour s'adapter à la nouvelle taille, sera amplifiée, mais l'image elle-même reste 100x100
Ok, vous pouvez tester ceci pour être à l'aise avec l'explication
avoir une image
<image id='f' src='whateveritis' width=100 height=100>
Vous voyez? est 100x100px
Maintenant, ajoutez un style
style='width:200px'
<image id='f' style='width:200px' src='whateveritis' width=100 height=100>
Le voir? maintenant c'est amplifié
Maintenant, récupérez ses attributs
f = document.getElementById('f');
alert(f.width) // you get 200px
alert(f.getAttribute('width')) // you get 100px
N'oubliez pas de travailler avec des images, des toiles et un tout, ne basez pas la taille dans les styles, mais dans les attributs
La taille par défaut d'un div ou autre est zéro
alors vous pouvez définir sa taille par styles, mais la taille reste en fait 0x0px
Mais la plupart du temps, les programmes fonctionneront en fonction des valeurs d'attributs, pas des valeurs de styles.
Et, il y a une autre mesure, mais ce sera votre devoir
Alors quel est le f.scroolWidth, et f.scrollHeight s'il est identique à la largeur et à la hauteur (sans défilement bien sûr).
Un dernier point à prendre en compte Même quand j'ai fait l'exemple avec voiture, c'est différent avec les éléments puisque la propriété couleur est cachée mais accessible aux styles C'est, la seule propriété réelle d'un élément est celle que vous écrivez directement dans le html code de balise ou celui que vous définissez avec setAttribute car même si vous modifiez
element.width est un style et non l'attribut lui-même
donc la seule façon de vraiment changer sa valeur sera
element.setAttribute ('largeur', x)
J'ai lu cela moi-même et j'ai trouvé une autre question que vous pourriez vous poser, j'ai laissé la balise html avec 100x100 et c'est pourquoi j'obtiens l'alerte avec 100 au lieu de 200
Eh bien, ce n'est pas le cas
Vous pouvez aussi tester pour cela, ne changez pas le tag tel quel
commande a f.setAttribute ('width', '300');
puis
alert(f.width) // you get 200px
alert(f.getAttribute('width')) // you get 300px
dans JQuery est le même, la seule commande pour changer l'attribut est $ (). attr
$ (). widht et $ (). css changent simplement le style
Finalement
Est-ce important?
Oui, c'est parce que même lorsque pour les images et le canevas travaillent avec l'attribut pas le style, celui qui prend l'effet visuel est le style pas l'attribut C'est, vous pouvez définir la taille d'origine à 200x200 et ce sera 200x200 mais si vous changez de style en 300x300 l'image sera de 300 à partir de là, peu importe si vous définissez son attribut sur 1000x1000, l'image sera toujours considérée comme 300x300 Mais par exemple, pour un programme de canevas, l'image sur laquelle il travaille est une taille de 1000x1000 .