bonjour à tous! Voila j'essaye de créer un script qui me permet de changer le value d'une div en javascript. Mon souci c'est qu'il n'y a ni d'ID n'y ni de Name pour pointer sur l'element!
Comment puis-je faire ???
Version imprimable
bonjour à tous! Voila j'essaye de créer un script qui me permet de changer le value d'une div en javascript. Mon souci c'est qu'il n'y a ni d'ID n'y ni de Name pour pointer sur l'element!
Comment puis-je faire ???
Autrement peut-être ?
Tu t'attends à quoi avec le peu d'informations que tu nous donnes ? Qu'on devine ton code, les contraintes, les liens entre les éléments ?
Bonjour,
Il faut voir selon la structure HTML de la page. Avec certaines méthodes et quelques boucles, on y parviendra sûrement.
En faite je veut modifier un div d'une page a partir de greasemonkey !
par exemple :
et avec mon script greasemonkey modifier salut et le 123456Code:
1
2
3page html <div value="123456">salut</div>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 script: // ==UserScript== // @name Apu Flash! // @namespace http://exemple.com/scripts/pubflash/ // @description Retire les pubs en Flash du site example.com // @include http://exemple.com/* // ==/UserScript== (function() { b = document.body; nouveauinput = document.createElement("input"); nouveauinput.innerHTML = "mon_input_ajouter"; nouveauinput.type = "submit"; nouveauinput.id = "mon_input_ajouter"; b.parentNode.insertBefore(nouveauinput,b); document.getElementById('mon_input_ajouter').addEventListener('click', touche_entrer, true); function touche_entrer() { alert("coucou"); //ici je voudrai modifier la valeur de la div } } )();
j'ai peut être trouvé une solution qu'en pensez vous ??
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 // DHTML var arrayImg = document.body.all.tags("div"); // DOM var arrayImg = document.body.getElementsByTagName("div"); // boucle sur les tags for(i=0; i<arrayImg.length; i++) { var result; if( typeof(arrayImg[i]) != 'undefined' ) result= arrayImg[0].value; }
C'est l'idée précitée. :)
Est-ce la meilleure méthode ? Nous ne pouvons le dire. Ca dépend réellement de votre HTML.
voici le code html en question
j'aimerai changer les value de adriens.thomas et abby.loCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <div> <div class="fb_protected_wrapper" fb_protected="true"> <div fb_protected="true" import_external_friends="false" actiontext="Ticket de carnaval." exclude_ids="" cols="5" rows="5" bypass="skip" email_invite="false" selected_rows="5" unselected_rows="6" max="60" condensed="true"> <div class="condensed_multi_friend_selector" style="visibility: visible;"> <div class="typeahead_holder"> </div> <div class="unselected_list" style="height: 114px;"> </div> <div class="selected_list" style="height: 75px;"> <label class="clearfix" style=""> <input class="inputcheckbox " type="checkbox" value="729313455" > <span>Abby*·Lo</span> </label> <label class="clearfix" style=""> <input class="inputcheckbox " type="checkbox" value="1072118744" > <span>Adrien*·Thomas</span> </label> </div>
merci pour votre aide!
J'aurais tendance à te conseiller de t'orienter vers jQuery qui te permettra d'accéder aux éléments par leur sélecteur css :
Sinon, tu peux faire par exempleCode:mesElementsHTML = $("input.inputcheckbox span")//suivi éventuellement de .each() pour traiter chacun des deux éléments
Code:
1
2
3
4 var elements = document.body.getElementsByTagName("input") for(var inputElement in elements) { inputElement.innerHTML(/*ton nouveau span*/); }
merci de ta réponse !! je vais regarder tout sa !!! Si non pour changer le value de l'input je procède comment en jquery?
voilà pour le jquery :
Comme tu le sais sans doute, tu as juste besoin de télécharger le fichier jquery.js et de rajouter dans ton head :Code:$("input.inputcheckbox span").html("nouveau contenu du span");
pour avoir accès à toute la librairie jquery (tu verras, tu ne pourras très vite plus t'en passer ! ;) )Code:<script type="text/javascript" src="jquery.js"></script>
Attention au passage : dans mon exemple, le jquery change directement le contenu situé entre les balises <span></span> alors que l'exemple précédent sans jquery changeait le contenu situé entre les balises <input></input>
c'est possible ça un span dans un input ?Code:$("input.inputcheckbox span")
merci encore ! Pour la source en effet il n'a pas de souci !!:)
par contre il y a une chose que tu a mal compris, c'est que j'aimerais aussi changer le value dans les parametres de l'input:
<input class="inputcheckbox " type="checkbox" value="729313455" >
^ ^
|| ||
j'y crois pas non plus!
Sans avoir recours à jQuery tu peux avoir la même démarche
- recherche des INPUT de la page
- récupération du parent
- récupération des SPAN du parent
- faire ce que tu as à faire
exemple
la question reste de savoir qui est qui ???Code:
1
2
3
4
5
6 var i, nb; var oParent, oInput = document.getElementsByTagName('INPUT'); for( i = 0, nb = oInput.length; i < nb; i++){ oParent = oInput[i].parentNode; oParent.getElementsByTagName('SPAN')[0].innerHTML = 'Salut du ' +oInput[i].value; }
looool mais je suis grave aujourd'hui !Citation:
c'est possible ça un span dans un input ?
dsl, évidemment, c'était pas ça. Voilà le code corrigé :
et pour changer les paramètres de l'input :Code:$("label.clearfix span").html("nouveau contenu du span");
teste la valeur de element.value pour savoir qui est qui, par exemple.Code:$("label.clearfix input").each(function(element) {element.value="lalilala";});
Sans jquery, je te laisse te référer à noSmoking
merci de votre aide !
juste une petite retouche au code de Sharcoux
ou encoreCode:
1
2
3 $("label.clearfix input").each( function( i, element){ // ajout du i element.value="lalilala"; });
Mais pourquoi pas jQuery si tu n'as que cela à faire.Code:
1
2
3 $("label.clearfix input").each( function(){ this.value="lalilala"; });
Code:$("label.clearfix input").val('coucou')
euh...ouais, enfin là c'est si tu veux le même contenu pour les deux input, ce dont je doute...
sinon, merci pour les corrections noSmoking :mouarf:
en particulier,i est ici l'indice de la balise input rencontrée (indexée à partir de 0), càd i=0 pour ton premier input, i=1 pour le suivant, etc. Si tu connais l'ordre des input, ça peut te suffire à les identifier.Code:
1
2
3 $("label.clearfix input").each( function( i, element){ // ajout du i element.value="lalilala"; });
Comme l'on dit les autres ici, cherche un élément proche récurrent et manipule les nodes (childNode, parentNode, nextNode) pour arriver à l'élément voulu.
Sinon, comme l'on de nouveau dit les autres, une librairie type jQuery te facilitera sans doute la tâche.
Merci encore une fois votre aide est génial !!!!