Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

règles de mise à la ligne

24 réponses
Avatar
Une Bévue
je ne me souviens plus du tout des règles de mise à la ligne pour js...
par exemple j'ai écrit :
var footer_right=document.getElementById('footer_right');
var button="<a class='button' href='javascript:void(0)' ";
button+="onclick='"+button_function+";return false'><span ";
button+="id='"+button_id+"'>"+button_label+"</span></a>";
footer_right.innerHTML+=button;

parce que je me suis rendu compte qu'on ne pouvait pas écrire :
var footer_right=document.getElementById('footer_right');
footer_right.innerHTML+="<a class='button' href='javascript:void(0)' ";
footer_right.innerHTML+="onclick='"+button_function+";return
false'><span ";
footer_right.innerHTML+="id='"+button_id+"'>"+button_label+"</span></a>";

car alors le "html" est mal interprété par le navigateur, Chrome sous
Ubuntu, les < sont transformés en &lt; et le balisage disparaît.
J'en ai conclu que pour faire un #innerHTML+= il faut que le membre de
droite soit "balancé", c'est une chose.

donc tout au dessus, pour la variable "button" est-ce que j'aurais pu
n'écrire qu'une seule commande mais sur plusieurs lignes comme par exemple :

var button="<a class='button' href='javascript:void(0)' " +
"onclick='"+button_function+";return false'><span " +
"id='"+button_id+"'>"+button_label+"</span></a>";

je sais qu'on ne peut pas écrire, comme en php :

var button="<a class='button' href='javascript:void(0)'
onclick='"+button_function+";return false'><span
id='"+button_id+"'>"+button_label+"</span></a>";

10 réponses

1 2 3
Avatar
Bol
je ne me souviens plus du tout des règles de mise à la ligne



Comme tu le dis toi même, le retour à la ligne dans le source
n'est pas inclus comme en PHP dans une string, et plante l'interpretation

var button="<a class='button' href='javascript:void(0)' " +
"onclick='"+button_function+";return false'><span " +
"id='"+button_id+"'>"+button_label+"</span></a>";



pourquoi des + inutiles ?

A+
Bol
Avatar
Bol
var footer_right=document.getElementById('footer_right');
footer_right.innerHTML+="<a class='button' href='javascript:void(0)' ";
footer_right.innerHTML+="onclick='"+button_function+";return



a chaque innetHTML += il va essayer d'interpreter le HTML
et donc forcement il n'attend pas que tu es fini ton dernier +
meme question pourquoi ne pas mettre une seule ligne ?

A+
Bol
Avatar
Matt...
Bonjour,

Le Tue, 06 Sep 2011 07:01:11 +0200, Une Bévue nvalid>
a écrit:

je ne me souviens plus du tout des règles de mise à la ligne pour js...
par exemple j'ai écrit :
var footer_right=document.getElementById('footer_right');
var button="<a class='button' href='javascript:void(0)' ";
button+="onclick='"+button_function+";return false'><span ";
button+="id='"+button_id+"'>"+button_label+"</span></a>";
footer_right.innerHTML+=button;





Et comme ceci :

var button = document.createElement("a");
button.className = "button";
button.setAttribute("href", "javascript:void(0)");
button.addEventListener("click", button_function);
footer_right.appendChild(button);

etc...

Marche sur Opéra et Firefox. Sur IE, les addEventListener n'ont pa s les
mêmes types d'évènements, il me semble.

matt...

--
Utilisant le client e-mail révolutionnaire d'Opera :
http://www.opera.com/mail/
Avatar
Une Bévue
On 06/09/2011 10:08, Bol wrote:
a chaque innetHTML += il va essayer d'interpreter le HTML
et donc forcement il n'attend pas que tu es fini ton dernier +


oui, ça j'avais compris.

meme question pourquoi ne pas mettre une seule ligne ?



pour lire plus facilement le code, si la ligne est trop longue,
l'éditeur de texte ne permet pas de tout voir, il faut scroller ???
Avatar
Une Bévue
On 06/09/2011 10:04, Bol wrote:
pourquoi des + inutiles ?



euh, je me suis peut-être trompé, car en essayant directement (comme
en php) :

var button="<a class='button' href='javascript:void(0)'
button+="onclick='"+button_function+";return false'><span
button+="id='"+button_id+"'>"+button_label+"</span></a>";


j'ai eu une erreur, mais bon, elle venait peut-être d'ailleurs ???

si je comprends bien ta remarque, on peut écrire sur plusieurs lignes
comme ci-dessus ?
Avatar
Une Bévue
On 06/09/2011 11:04, Matt... wrote:


Et comme ceci :

var button = document.createElement("a");
button.className = "button";
button.setAttribute("href", "javascript:void(0)");
button.addEventListener("click", button_function);
footer_right.appendChild(button);




parce que la pluspart du html ajouté l'est par php où je dois bien
utiliser #innerHTML,

etc...

Marche sur Opéra et Firefox. Sur IE, les addEventListener n'ont pas
les mêmes types d'évènements, il me semble.



pas grave je me fiche de ie que je n'utilise pas.
Avatar
Bol
pour lire plus facilement le code, si la ligne est trop longue, l'éditeur
de texte ne permet pas de tout voir, il faut scroller ???



Donc pour mieux lire le code, tu programmes
plein de concatenation inutiles ?

Il y a aussi la solution d'avoir un ecran plus grand ;-)

A+
Bol
Avatar
Bol
pourquoi des + inutiles ?



si je comprends bien ta remarque, on peut écrire sur plusieurs lignes
comme ci-dessus ?



Non, je suggerais de faire les retours la ou il y a deja des +
et de ne pas mettre de + dans une string juste pour la lecture du code

var button="<a class='button' href='javascript:void(0)' " +
"onclick='"+button_function+";return false'><span " +
"id='"+button_id+"'>"+button_label+"</span></a>";



var button="<a class='button' href='javascript:void(0)' onclick='"
+ button_function + ";return false'><span "
+ "id='"+button_id + "'>" + button_label + "</span></a>";

A+
Bol
Avatar
Pascal Poncet
Bonjour,

Le 06/09/2011 12:35, Bol a écrit :
var button="<a class='button' href='javascript:void(0)' onclick='"
+ button_function + ";return false'><span "
+ "id='"+button_id + "'>" + button_label +"</span></a>";



Attention à cette notation, elle est permise par beaucoup
d'implémentations de JS (peut-être même toutes aujourd'hui) mais n'est
pas conforme à ECMAScript.
Cette norme prévoit que le point-virgule reste facultatif et que, de ce
fait, chaque ligne qui pourrait être normalement interprétée soit
considérée comme terminée.
Or c'est bien le cas de la première ligne !

Bon, le comportement actuel des navigateurs ne devrait pas changer, mais
cela reste imprudent, à mon avis.

--
Cordialement,
Pascal
Avatar
Pascal Poncet
Bonjour,

Le 06/09/2011 11:22, Une Bévue a écrit :
On 06/09/2011 11:04, Matt... wrote:
var button = document.createElement("a");
button.className = "button";
button.setAttribute("href", "javascript:void(0)");
button.addEventListener("click", button_function);
footer_right.appendChild(button);





Tout à fait d'accord avec Matt !

parce que la pluspart du html ajouté l'est par php où je dois bien
utiliser #innerHTML,



Je ne vois pas trop le rapport, excuses-moi.
Qu'est-ce qui empêche PHP de générer le code ci-dessus ?
Voire seulement la portion nécessaire aux changements ?

Marche sur Opéra et Firefox. Sur IE, les addEventListener n'ont pas
les mêmes types d'évènements, il me semble.



pas grave je me fiche de ie que je n'utilise pas.



Remarque que, si tu n'a pas besoin de déclencher plusieurs gestionnaires
sur le même événement, tu peux toujours utiliser la manière classique
d'enregistrer les événements.

<script>
button.onclick = button_function;
</script>

--
Cordialement,
Pascal
1 2 3