11548 sujets

JavaScript, DOM et API Web HTML5

BONJOUR TLM Smiley lol

Cet objet ne gère pas cette propriété ou cette méthode.

Voici le code qui me donne cette erreur seulement sur IE. Smiley biggol


function upQtt(idFr,limit,pack) {
	
	var newtext = document.eval('myform'+idFr).eval('inputtext'+idFr).value;
	
	pack = pack * 1;
	
	newtext = newtext * 1;
	
	newtext += pack;
		
	if(newtext > limit){
	
		newtext = limit;
	
	}
	
	document.eval('myform'+idFr).eval('inputtext'+idFr).value = newtext;
	
		
}


Merci d'avance.
Modifié par Pathelin (28 May 2007 - 15:59)
Salut
Je suis absolument sur que tu peux te passer d'eval.
Je suis également sur que la syntaxe que tu utilises est fausse.

Peux tu présenter le code html concerné?
Pathelin a écrit :


	var newtext = document.eval('myform'+idFr).eval('inputtext'+idFr).value;


<Un peu de modération>Diante, que voilà un code problématique.</Un peu de modération>
Déjà quand on est un être humain on tape sur un formulaire via un id et non un name (name is deprecated).
Idem pour les éléments.
Ensuite eval est un mot clé javascript et non une méthode d'un HTMLElement.
donc faire : document.eval() puis un .eval sur le truc récupéré c'est naze.
En l'an 2 ton code aurait plutôt été retranscrit de cette manière :


	eval("var newtext = document.myform"+idFr+".inputtext"+idFr+".value");


Cela reste tout aussi crade et moche, alors plusieurs choix s'offrent à toi. Soit tu reste avec ton HTML tout pourrii et tu accèdes tes éléments à la porcasse, alors tu utilises cette manière :

	var newtext = document["myform"+idFr]["inputtext"+idFr].value;

Oui un objet peut se traiter comme une hashmap/tableau associatif en JS
en gros pour attraper un attribut/reference sur objet on peut faire :
monObj.attribut
monObj Smiley attribut
et aussi
monObj.getAttribute("attribut");

Et accessoirement ton code serait largement mieux si tu mettais un id sur ton champ input :
<input type="text" id="toto">

et tu le recupère directement via :

	var newtext = document.getElementById("inputtext"+idFr).value;



J'ai peur que ce que tu essayes de faire est codé par les pieds, auquel cas je te conseille de copier/coller ton code JS/HTML ici et on va t'aider à faire du code propre. Merci
Modifié par Florent V. (27 May 2007 - 18:32)
@ gatsu, et bé, aimable et pontifiant comme tu es, tu ne vas pas tarder à finir modérateur (ce n'est heureusement pas une généralités, se reconnaîtront...) !! j'hallucine... bien sûr je suppose que tu n'as jamais commis une erreur de code au cours de ta sûrement longue et exceptionnelle existence. Enfin, mieux vaut que je m'arrête là, je finirais par devenir aussi aimable que toi.....
Modifié par virtualgadjo (27 May 2007 - 12:22)
@ Pathelin,
juste une piste, sans tenir compte d'autres possibles améliorations de ton code, IE te donne cette erreur parce que ce que les autres voient comme document lui le voit comme window. Si tu veux que ton code passe sous ie il faut que tu mettes un appel conditionnel à son exécution, pas la tienne rassure-toi, je ne suis pas gatsu...
genre


if (navigator.appName.indexOf("Microsoft") != -1) {
window.eval... //la suite de ta fonction
}
else {
document.eval...//itou pour la fonction
}


maintenant, plus aimablement, il est vrai que quelques retouches ne feraient pas de mal, notamment le passage par un id, pour eval, je ne préjuge pas ne sachant pas ce que tu passes dans ton formulaire

have swing
Administrateur
Gatsu35 a écrit :

<Un peu de modération>Diante, que voilà un code problématique.</Un peu de modération>

On est pas sur Prog@HFr http://forum-images.hardware.fr/images/perso/petrus75.gif alors tu changes de ton, mmh? http://forum-images.hardware.fr/images/perso/dawak.gif
Ne viens aider de façon constructive ici qu'une fois que tu te seras défoulé, je t'en prie ...


Pathelin a écrit :
Cet objet ne gère pas cette propriété ou cette méthode.
(...)
Merci d'avance.

Ce membre gère-t'il les règles de ce Forum?
Bonjour ? -3 pt
Merci. +1 pt
d'avance! +1 pt

Peut mieux faire Smiley baille Smiley cligne

Bonjour et bienvenue ceci dit.


virtualgadjo a écrit :
@ gatsu, et bé, aimable et pontifiant comme tu es, tu ne vas pas tarder à finir modérateur (ce n'est heureusement pas une généralités, se reconnaîtront...) !! (...)

Gnii? Les modérateurs (ou certains?) doivent-ils se sentir visés par ce message adressé à Gatsu35 ou bien c'est de l'humour?

virtualgadjo a écrit :
(...) j'hallucine... bien sûr je suppose que tu n'as jamais commis une erreur de code au cours de ta sûrement longue et exceptionnelle existence. Enfin, mieux vaut que je m'arrête là, je finirais par devenir aussi aimable que toi.....

Ce que personne ne souhaite Smiley smile C'est le boulot des modérateurs de modérer, inutile de prendre parti quand ça fuse Smiley cligne Après, souvent, ça part encore plus en carafe "tout le monde" contre "tout le monde" et les modos ont 10 fois plus de boulot à calmer les esprits Smiley sweatdrop même si ça part d'une bonne intention.
Modifié par Mikachu (29 May 2007 - 10:09)
virtualgadjo a écrit :
@ Pathelin,
juste une piste, sans tenir compte d'autres possibles améliorations de ton code, IE te donne cette erreur parce que ce que les autres voient comme document lui le voit comme window. Si tu veux que ton code passe sous ie il faut que tu mettes un appel conditionnel à son exécution, pas la tienne rassure-toi, je ne suis pas gatsu...
genre


if (navigator.appName.indexOf("Microsoft") != -1) {
window.eval... //la suite de ta fonction
}
else {
document.eval...//itou pour la fonction
}


maintenant, plus aimablement, il est vrai que quelques retouches ne feraient pas de mal, notamment le passage par un id, pour eval, je ne préjuge pas ne sachant pas ce que tu passes dans ton formulaire

have swing


Eval est à coup sur inutile dans ce cadre d'utilisation, comme 99,99% des cas. J'ai demandé à ce qu'il présente son code c'est pour éviter d'utiliser ce truc Smiley lol
virtualgadjo a écrit :


if (navigator.appName.indexOf("Microsoft") != -1) {
window.eval... //la suite de ta fonction
}
else {
document.eval...//itou pour la fonction
}


eval est une fonction JS et non une méthode d'un objet, donc en aucun cas ca ne sert à rien d'y accéder par document.

de plus faire un window.mafunc(), revient à faire un mafunc().

Et autrement tester le UserAgent du navigateur pour un truc aussi balot est comme tuer une baleine pour n'en manger que 100g.
Donc normalement on fait plutôt des tests sur les objets :


if (document.eval) {
   document.eval
} else {
   window.eval
}


même si le code que je te mets est stupide puisque de toute facon il n'y a que window.eval qui existe (puisque fonction JS de base) donc un document.eval n'existe pas de toute manière.

Je t'invite à installer Firebug sur ton firefox, tu verras en mod Dom c'est un outil merveilleux. http://www.getfirebug.com
Modifié par Gatsu35 (27 May 2007 - 15:10)
Salut Felipe,
c'est vrai que ce nouveau membre s'est laissé aller à une entrée en matière un poil cavalière mais comme tu le constates aussi, le fond est bon, il a quasi équilibré la balance Smiley smile Maintenant, accueilli comme il l'a été, à sa place, je pense que je ne remettrais plus le clavier ici...

J'adore le gnii, dommage qu'il n'y ait pas le smiley idoine pour le faire, je suis sûr qu'on serait en plein tex avery Smiley smile
Pour répondre à la question qui le suit, en bon grand-breton (c'est sûrement ce qui m'a empêché de déraper à mon tour, l'éducation, on ne se refait pas...), je vais te faire une réponse de... normand (puisque nous autres grands-bretons ne nous disputons pas le mont saint-michel avec eux Smiley smile ), un peu des deux, heuruesement, seulement un tout petit peu de la partie qui froisse et beaucoup plus d'humour mais j'admets avoir moi-même été tenté d'abandonner ce forum, je l'ai d'ailleurs fait quelque temps et n'y suis de retour que depuis une quinzaine de jours du fait de l'hatitude méprisante de quelques membres émérites dont modo(s) à l'occasion. Rien qu'aujourd'hui j'ai lu une réponse à un post qui m'a personnellemnt un poil choqué (oui, oui, je sais, à la asterix et les bretons, shocking Smiley smile et l'âge aidant, ça n'arrange pas mon côté touchy sur le sujet).

Je conçois que d'aucun puisse être lassé de répondre à des posts de code à rallonge qui ramènent souvent au mêmes problèmes élémentaires, surtout quand le d'aucun en question, modo de haut vol et pondeur de tuto en vue plane certainement malgré un âge façon berceau (mais chacun sait qu'à une âme si bien née, la valeur...) dans des sphères qui m'échappent, mais, ça c'est perso, je pense alors que la meilleure des thérapies à cet agacement est de ne pas y répondre plutôt que de le faire en distillant son mépris de prix nobel des css et de laisser à ceux qui continuent d'avoir plaisir à donner un coup de pince aux débutant le loisir de le faire.

Voilou, tout en écrivant, je constate au passage que Gatsu remets ça avec l'amablilté qui lui sied. Pas grave, disons juste que Firebug, il se trouve que j'ai, connais et pratique 365j/365, que la syntaxe que je donne utilise eval parce que c'est la fonction du code incriminée, que lire un post intégralement permet de voir ce qui s'y dit, même à la fin, etc, etc, en restant british jusqu'au bout.

D'accord avec Shinuza, pour juger de ce qui serait plus approprié d'utiliser comme fonction, le reste du code serait bien utile, eval ne servant qu'à exécuter du code contenu dans une variable et, étant donné le risque que ça représente, sauf admin (et encore, il faut avoir une confiance aveugle en son client...), il est assez rare d'inviter ses utilisateurs à poster du code dans un formulaire Smiley cligne mais bon, faut voir

Voilou

Have swing
Nan mais regarde mieux le code o_O

le mec cherche à accéder à des éléments HTML à la mode :
document.monform.moninputdansleform

Mais comme il a un paramètre en plus (une variable qui correspond à un numéro (qui doit etre contenu dans le nom de son form et de son input), alors il balance un eval à la porcasse.

En gros il veut faire :
document.monForm1.input1

alors il balance un eval :
eval ("document.monForm"+variable+".input"+variable);
alors qu'il est plus judicieux de passer soit par un id ou soit par la/les méthodes que j'ai citées plus haut.

EN aucun cas il ne s'agit d'éxécuter du code contenu dans un champ de formulaire.
Gatsu35 a écrit :
le mec cherche à accéder (...)

« le mec » en question a certes pas un nom mais un pseudonyme, et il me semble qu'il serait plus respectueux de parler de cette personne en utilisant le pseudonyme qu'elle s'est choisi, plutôt qu'un qualificatif quelque peu méprisant.

On peut critiquer un code ou une solution avec virulence (en évitant autant que possible la condescendance), mais ça ne s'applique pas aux personnes venant poster ledit code ou ladite solution sur le forum.

Merci à l'avenir de faire quelques efforts sur ce point. Smiley smile
Gatsu35 a écrit :
(name is deprecated)

À l'évidence non :
http://www.w3.org/TR/html401/interact/forms.html#edef-FORM

L'attribut name pour l'élément form est valide en HTML 4.01 (strict et transitional), ainsi qu'en XHTML 1.0 Transitional. Il est par contre invalide en XHTML 1.0 Strict.

La spécification HTML 4.01 précise en commentaire que cet attribut est autorisé pour form pour des questions de rétrocompatibilité.

Par ailleurs, l'attribut name a d'autres usages parfaitement valides et conseillés, notamment son utilisation pour les éléments de formulaire input, button, textarea, et select (j'en oublie un ?).
Florent V. a écrit :

À l'évidence non :
http://www.w3.org/TR/html401/interact/forms.html#edef-FORM

L'attribut name pour l'élément form est valide en HTML 4.01 (strict et transitional), ainsi qu'en XHTML 1.0 Transitional. Il est par contre invalide en XHTML 1.0 Strict.

La spécification HTML 4.01 précise en commentaire que cet attribut est autorisé pour form pour des questions de rétrocompatibilité.

Par ailleurs, l'attribut name a d'autres usages parfaitement valides et conseillés, notamment son utilisation pour les éléments de formulaire input, button, textarea, et select (j'en oublie un ?).


Mais je ne parlais que pour Form, et pour moi, quelqu'un qui code en 2007 ne doit pas utiliser le name sur form.
eT je parlais surtout de l'action de récupérer les éléments par leur name.
Ca peut être utile, mais je trouve cela crade
Modérateur
Hello,

En 2007, personne ne préconise de coder en xhtml 1.0 strict ; c'est une erreur que de croire que c'est préférable.
Tout dépend du contexte dans lequel on se trouve et des besoins.
Par ailleurs, name n'est pas sale ; ce qui compte est de respecter la DTD sur laquelle on s'appuie. Sur les éléments de formulaire, name est particulièrement utile en PHP... bien plus qu'un identifiant ou une classe. Smiley cligne
koala64 a écrit :
Hello,

En 2007, personne ne préconise de coder en xhtml 1.0 strict ; c'est une erreur que de croire que c'est préférable.
Tout dépend du contexte dans lequel on se trouve et des besoins.
Par ailleurs, name n'est pas sale ; ce qui compte est de respecter la DTD sur laquelle on s'appuie. Sur les éléments de formulaire, name est particulièrement utile en PHP... bien plus qu'un identifiant ou une classe. Smiley cligne

Mais en en aucun cas je parle des éléments de formulaires Smiley biggol
Mais des formulaires en eux-même.
Encore heureux que name sur les input existe.

L'accession par le name du form c'est crade c'est tout. Autant directement accéder aux champs par leur "id". C'est tout ce que je voulais dire.

Je ne force personne à coder en xHTML 1.0 strict, ni dans une quelconque DTD.
Je parle purement JS ici (DOM)
Modifié par Gatsu35 (28 May 2007 - 13:09)
Merci et sans rancune! Pour la majorité je suis supris de la rapidité et claireté de vos réponses! C'est super apprécier! Je vais faire les efforts néssécaire pour amélioré mon code. Smiley biggrin