11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai un code qui me permet de remplacer le bouton input. Mais j'ai des avertissements dans Firefox et je ne comprend pas comment le règler.


<!-- debut bouton input file -->
<div id="oldInput">
<input type="file" id="file1" onkeyup="setFilename(this.value, 'newfile1');" onchange="setFilename(this.value, 'newfile1');" >
</div>
<div class="newInput">
<img src="images/input-left.gif" width="5" height="17" alt="" class="inp" /><input type="text" name="newfile1" id="newfile1" class="newtext" onfocus="this.blur();"><img src="images/input-right.gif" width="5" height="17" alt="" class="inp" />
<img src="images/bt-parcourir.gif" width="68" height="22" alt="parcourir"  class="newbutton" />
</div>

<script type="text/javascript">
setFilename = function(theFileName, oldInput){ document.getElementById(oldInput).value = theFileName; }
</script>
<!-- fin bouton input file -->

a écrit :
J'ai un code qui me permet de remplacer le bouton input.


Tu veux bien expliquer un peu mieux ?
Tu veux remplacer le bouton input par quoi ?
dvilston a écrit :
J'ai un code qui me permet de remplacer le bouton input.


Tu veux bien expliquer un peu mieux ?
Tu veux remplacer le bouton input par quoi ?

Mon code fonctionne bien... c'est la console d'avertissement de firefox qui me donne un message. Et fait référence a mon javascript.

upload/16393-console.gif
Modifié par britanicus75 (17 Oct 2008 - 17:21)
La propriété filter est une propriété CSS non standard,compréhensible uniquement par IE. Il faut donc le mettre en commentaire sauf pour IE (voir http://www.css4design.com/blog/commentaires-conditionnels-d-internet-explorer-vs-hacks-css ).

Ensuite, tu affectes une valeur à la variable setFilename sans la déclarer par le mot-clé 'var'.
Il suffit d'écrire :

var setFilename = function(theFileName, oldInput){ document.getElementById(oldInput).value = theFileName; }


Enfin, pour le dernier warning, ça fait référence à une partie de ton code que tu n'as pas posté, mais tu appelles la propriété "length" d'un objet que tu as stocké dans la variable 'keys' et cet objet n'a pas de propriété avec ce nom.

@+
Laruiss
laruiss a écrit :
Ensuite, tu affectes une valeur à la variable setFilename sans la déclarer par le mot-clé 'var'.
Il suffit d'écrire :

var setFilename = function(theFileName, oldInput){ document.getElementById(oldInput).value = theFileName; }


Enfin, pour le dernier warning, ça fait référence à une partie de ton code que tu n'as pas posté, mais tu appelles la propriété "length" d'un objet que tu as stocké dans la variable 'keys' et cet objet n'a pas de propriété avec ce nom.


Pour le filter ca va je comprenais.
Il me semble que "var" n'est pas obligatoire lorsque l'on écrit du JS?
"Keys" je ne vois pas d'ou cela vient, j'ai fournis tout le code de mon javascript plus haut dans ce poste. Pourquoi est-il un erreur si je ne l'appele pas?

Merci Lariuss
Tu as essayé de mettre le "var"?
Ca ne change rien?


Ensuite, es tu certain de n'avoir rien d'autre comme javascript dans la page? (un ads, un script inclu, etc)
Affiche la source de la page et fais une petite recherche ctrl+f sur le mot "<script"
Calak a écrit :
Tu as essayé de mettre le "var"?
Ca ne change rien?


Ensuite, es tu certain de n'avoir rien d'autre comme javascript dans la page? (un ads, un script inclu, etc)
Affiche la source de la page et fais une petite recherche ctrl+f sur le mot "<script"


J'ai rien d'autre dans ma page. J'ai ajouté le VAR mais j'aimerais savoir si cela peut être nuisible parfois. Il me semble qu'il est préférable de ne pas en mettre?
Je te fournis le code source au complet.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title> New Document </title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="Keywords" content="">
<meta name="Description" content="">

<style type="text/css">
.clear{ clear:both; }
.inputContainer{ margin:20px 0; padding:0; }
.oldInput{ position:relative; z-index:5; }
.oldInput input{
	margin:0;
	padding:0;
	cursor:pointer;
	-moz-opacity:0 ;
	filter:alpha(opacity: 0);
	opacity: 0;
}
.newInput{
	margin:0;
	padding:0;
	position:relative;
	z-index:4;
	margin-top:-38px;
	float:left;
}
.newtext{
	position:relative;
	border:1px solid #b5bbe2;
	height:19px;
}
.newbutton{
	position:relative;
	top:11px;
}
</style>

</head>
<body>


<form action="" method="">

	
<!-- debut bouton input file -->
<div id="oldInput">
<input type="file" id="file1" onkeyup="setFilename(this.value, 'newfile1');" onchange="setFilename(this.value, 'newfile1');" >
</div>
<div class="newInput">
<img src="images/input-left.gif" width="5" height="17" alt="" class="inp" /><input type="text" name="newfile1" id="newfile1" class="newtext" onfocus="this.blur();"><img src="images/input-right.gif" width="5" height="17" alt="" class="inp" />
<img src="images/bt-parcourir.gif" width="68" height="22" alt="parcourir"  class="newbutton" />
</div>

</form>


<script type="text/javascript">
var setFilename = function(theFileName, oldInput){ document.getElementById(oldInput).value = theFileName; }
</script>
<!-- fin bouton input file -->


</body>

</html>

Lorsque tu es au niveau "root" tu dois préfixer du mot clé "var".

Le fait de ne pas mettre de "var" sous-entend que ta variable devient globale... (Pour simplifier) et c'est mal.

Et tu as essayé de mettre "oldInput" entre guillement dans document.getElementById(oldInput).value ?
Calak a écrit :
Lorsque tu es au niveau "root" tu dois préfixer du mot clé "var".

Le fait de ne pas mettre de "var" sous-entend que ta variable devient globale... (Pour simplifier) et c'est mal.

Et tu as essayé de mettre "oldInput" entre guillement dans document.getElementById(oldInput).value ?


Merci pour l'explication du var... est-ce qu'il y a une façon de mettre une variable globale sans que ce soit mal?
Je viens d'ajouter les guillemets mais toujours le même message.
Il y a quelque chose de bizarre... j'ai regardé la console de Firefox et soudain l'url des erreurs ne provient plus de ma page mais d'une adresse qui est inconnu. Est-ce que cela vient de Firefox?


<script type="text/javascript">
var setFilename = function(theFileName, oldInput){ document.getElementById("oldInput").value = theFileName; }
</script>


upload/16393-console2.gif
Modifié par britanicus75 (20 Oct 2008 - 16:01)
Autant pour moi, c'est ton div id="oldInput" qui m'a embrouillé et j'ai fait que survoler le code.
Ici, avec ton getElementById, c'est au paramettre passé à ta fonction que tu veux accéder, pas au div. Il ne faut bien évidement pas mettre de guillemets, excuse moi.



C'est marrant en effet, le script http://rmd.atdmt.com/tl/TopLayer.v2y.js existe mais aucune référence n'y est faite sur google.
Hop, manipunation d'url on tombe sur: Smiley url http://www.atdmt.com/[/url]
Mouais, ... pas convaincu... RichMedia et tuti frutti...

Recherche google sur l'adresse du site, et oh!
http://www.infos-du-net.com/forum/131685-11-http-atdmt

Et les 20 premiers résultats c'est parreil (avec en plus le site)

Donc, pour ton problème javascript là, je sais pas, mais t'as un trojan Smiley lol

Sinon, la seule manière de créer une var globale, c'est dans le top level (root) (hors des fonctions quoi) en la préfixant du mot "var"