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
Une Bévue
On 06/09/2011 12:52, Pascal Poncet wrote:
Bon, le comportement actuel des navigateurs ne devrait pas changer, mais
cela reste imprudent, à mon avis.




donc, j'en reste à ce que j'ai écrit.
Avatar
Une Bévue
On 06/09/2011 12:23, Bol wrote:
Donc pour mieux lire le code, tu programmes
plein de concatenation inutiles ?

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



non, comme les golden boys, 3/5 écrans...
Avatar
Une Bévue
On 06/09/2011 13:01, Pascal Poncet wrote:
Je ne vois pas trop le rapport, excuses-moi.



parce qu'avec php et js je fais du xhr dans chaque div que je veux
mettre à jour.

j'avais opté pour une construction dom côté php et je voulais faire du
#responseXML côté js, MAIS ça ne marche pas, je veux dire qu'on ne peut
pas construire en php un fragment de document par dom et le faire avaler
par le js, les objets dom, pour être insérrer doivent être construits à
partir du js.

Qu'est-ce qui empêche PHP de générer le code ci-dessus ?



c'est vrai, je n'ai pas essayé cette version...
mais bon construire un objet dom en string côté php et l'envoyer à js
pour qu'il le fasse avaler par le browser, ça me paraît pas fameux du tout.

encore moins que ce que je fais :
#innerHTML= #responseText;

d'ailleurs le navigateur parse bien l'html envoyé de cette manière, j'en
ai eu la preuve en faisant une erreur (oubli d'une fermeture </span>)
sur safari, l'oubli a été corrigé et la page marchait quand même, sur
chrome ça ne marchait pas...

Voire seulement la portion nécessaire aux changements ?
Avatar
Bol
je veux dire qu'on ne peut pas construire en php un
fragment de document par dom et le faire avaler par le js, les
objets dom, pour être insérrer doivent être construits à partir du js.



of course you can

if( xhr.readyState == 4 )
...
if( xhr.status= 0 )
{
//
...
// javascript
else if( xhr.getResponseHeader('Content-Type').match(
/(text|application)/javascript/ ) )
{
var js=document.createElement("script");
js.setAttribute( 'type', 'text/javascript' );
js.text = xhr.responseText;
document.body.appendChild(js);
js=null;
}

php

header( 'Content-Type: text/javascript' );
echo 'alert("coucou");';
echo 'document.createElement(...);';
...

PS: ne pas oublier un removeChild de temps en temps ;-)

A+
Bol
Avatar
Une Bévue
On 06/09/2011 15:33, Bol wrote:
header( 'Content-Type: text/javascript' );
echo 'alert("coucou");';
echo 'document.createElement(...);';
...



oui, j'ai pigé la manip, merci beaucoup.

ce que je voulais dire, je me suis mal exprimé, c'est qu'on ne peut pas
créer - directement -, depuis php, un sous-arbre DOM, il faut, comme tu
le suggère passer par js donc via php.

perso je trouve cette méthode plutôt lourde, dans mon cas :

le js demande une page php par xhr ;
celle-ci interroge la bd SQLite ;
crée une réponse en string capable de produire du js ;
le js construit et inserre le dom résultant...

sans doute j'essaierai cette méthode, comme je ne l'ai jamais fait, mais
quand mon code HTML/CSS sera stabilisé...
Avatar
Bol
perso je trouve cette méthode plutôt lourde, dans mon cas :

le js demande une page php par xhr ;
celle-ci interroge la bd SQLite ;
crée une réponse en string capable de produire du js ;
le js construit et inserre le dom résultant...

sans doute j'essaierai cette méthode, comme je ne l'ai jamais fait, mais
quand mon code HTML/CSS sera stabilisé...



Puisque tu peux switcher en fonction du Content-Type
tu peux mixer les retours HTML/CSS/JS et genrer en PHP
un de 3 types le mieux adapté dans ton application a
un moment donné

A+
Bol
Avatar
Une Bévue
On 07/09/2011 10:19, Bol wrote:
Puisque tu peux switcher en fonction du Content-Type
tu peux mixer les retours HTML/CSS/JS et genrer en PHP
un de 3 types le mieux adapté dans ton application a
un moment donné



oui, OK, merci, j'ai pigé la manip...
Avatar
SAM
Le 06/09/11 11:18, Une Bévue a écrit :
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 ???



une " qui manque ! ! ! Perdu ta loupe ?

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



non, comme ça :

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

avec un peu d'air, qu'on y voit bien

au contraire du PHP, en JS les ';' en fin de ligne sont facultatifs
(par contre, ici aussi, faut bien faire attention aux " et ')


--
Stéphane Moriaux avec/with iMac-intel
Avatar
SAM
Le 06/09/11 11:22, Une Bévue a écrit :
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,



ja n'a rien compris à c'ke tu dis !

qu'a à voir le pb du PHP dans l'histoire ?

Le php ne sert qu'à écrire le code html (et celui JS)
il n'inneriseHTML rien (à ma connaissance ? !)

echo "monBoutonALaFesse.innerHTML = 'ça me gratte';";


--
Stéphane Moriaux avec/with iMac-intel
Avatar
Une Bévue
On 07/09/2011 15:41, SAM wrote:
non, comme ça :

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

avec un peu d'air, qu'on y voit bien

au contraire du PHP, en JS les ';' en fin de ligne sont facultatifs
(par contre, ici aussi, faut bien faire attention aux " et ')




OK, merci, c'est ce que je fais...
1 2 3