Salve a tutti sto lavorando ad un progetto , nello specifico dopo aver creato una lista sotto una text area ho bisogno che la text area sopra si popoli quando venga cliccata una voce della lista.
la text area si dovrebbe popolare con un attributo di un un oggetto del mio codice js.
qui il codice js
codice:
function caricaXML(nomeFile) {
var xmlhttp;
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", nomeFile, false);
xmlhttp.send();
return xmlhttp.responseXML;
}
function canzoniere () { // costruttore del canzoniere
this.lista = []; //questo è l'array che contiene l'elenco delle canzoni
this.aggiungi =
function (c) { //metodo per aggiungere alla lista del canzoniere tutte le canzoni
this.lista.push(c);
}
this.visualizza = // viasualizzare le canzoni dell canzoniere
function(l) {
var s = "";
for (var i in l) {
s += l[i].visualizza();
}
return s;
}
this.inizializza =
function (n) {
var nodo = n.getElementsByTagName("canzoniere")[0]; //carico tutti gli elementi dell xml (partendo dal primo)
var l = nodo.getElementsByTagName("canzone"); // prendo tutti gli elementi <canzone>
for (var i = 0; i < l.length; i++) {
var canzone = new Canzone(); //questa variabile è un nuovo oggetto Canzone
canzone.inizializza(l[i]);
this.aggiungi(canzone); //in alternativa uso "this.lista.push(canzone);" ed elimino il metodo this.aggiungi
}
}
this.elencoGeneri= // elenco dei generi che popoleranno la prima select
function (){
var o = "";
o += '<option value="0" selected="selected"> GENERE </option>';
var d=0;
for (var i=0; i<this.lista.length-6; i++) { // le prime 4 canzoni hanno 4 generi diversi quindi soddisferanno la select
var e="c"+d; //id dinamico
o += '<option value="' + this.lista[i].genere + '" id="' + e + '">' + this.lista[i].genere + '</option>';
d++;
}
return o;
}
this.elencodifficolta= // elenco delle difficolta che popoleranno la seconda select
function (){
var o2 = "";
o2 += '<option value="0" selected="selected"> DIFFICOLTA </option>';
var d2=0;
for (var i=0; i<this.lista.length -7; i++) { // le prime 3 canzoni hanno 3 difficolta diverse quindi soddisferanno la select
var e="c"+d2; //id dinamico
o2 += '<option value="' + this.lista[i].difficolta + '" id="' + e + '">' + this.lista[i].difficolta + '</option>';
d2++;
}
return o2;
}
this.elencotonalita= // elenco delle tonalita che popolerranno la terza select
function (){
var o3 = "";
o3 += '<option value="0" selected="selected"> TONALITA </option>';
var d3=0;
for (var i=0; i<this.lista.length-3; i++) { // le prime 7 canzoni hanno 7 tonalita diverse quindi soddisfano la select
var e="c"+d3; //id dinamico
o3 += '<option value="' + this.lista[i].tonalita + '" id="' + e + '">' + this.lista[i].tonalita + '</option>';
d3++;
}
return o3;
}
this.cercaTutto= // metodo ricerca tutto
function (a,b,c){
var l = [];
if (a==0 && b==0 && c==0){
for (i in this.lista){
l.push(this.lista[i]);
}
}else if (a==0 && b != 0 && c != 0){
for (i in this.lista){
if (this.lista[i].difficolta == b && this.lista[i].tonalita == c) {
l.push(this.lista[i]);
}
}
}else if(a==0 && b==0 && c!=0){
for (i in this.lista){
if (this.lista[i].tonalita == c) {
l.push(this.lista[i]);
}
}
}else if(a!=0 && b==0 && c==0){
for (i in this.lista){
if (this.lista[i].genere == a) {
l.push(this.lista[i]);
}
}
}else if(a!=0 && b!=0 && c==0){
for (i in this.lista){
if (this.lista[i].genere == a && this.lista[i].difficolta == b) {
l.push(this.lista[i]);
}
}
}else if(a!=0 && b==0 && c!=0){
for (i in this.lista){
if (this.genere[i] == a && this.lista[i].tonalita == c) {
l.push(this.lista[i]);
}
}
}else if(a==0 && b!=0 && c==0) {
for (i in this.lista){
if (this.lista[i].difficolta == b) {
l.push(this.lista[i]);
}
}
}else{
for (i in this.lista){
if (this.lista[i].genere==a && this.lista[i].difficolta==b && this.lista[i].tonalita == c) {
l.push(this.lista[i]);
}
}
}
return l;
}
}
function ricerca() { //funzione ricerca derivante da visualizza.onclick
var select1 = document.getElementById("selectGenere");
var select2 = document.getElementById("selectDifficolta");
var select3 = document.getElementById("selectTonalita");
var i=0; //selezione genere
while ((i<select1.options.length) && (!select1.options[i].selected)) {
i++;
}
var j=0; //selezione difficolta
while ((j<select2.options.length) && (!select2.options[j].selected)) {
j++;
}
var k=0; //selezione tonalita
while ((k<select3.options.length) && (!select3.options[k].selected)) {
k++;
}
var l = ilCanzoniere.cercaTutto(select1.options[i].value,select2.options[j].value,select3.options[k].value);
var nodo = document.getElementById("lista");
if (l == "") {
nodo.innerHTML = ("nessun risultato");
} else {
nodo.innerHTML = ilCanzoniere.visualizza(l);
}
}
function Canzone () { //costruttore dell oggetto canzone c
this.genere;
this.titolo;
this.difficolta;
this.tonalita;
this.origine;
this.testo;
this.visualizza =
function() {
return '[*]'+''+this.titolo+'' + '' +'
'
}
this.inizializza =
function(nodo) {
var c = nodo.getAttribute("genere");
this.genere = c;
var lt = nodo.getElementsByTagName("titolo");
var t = lt[0].firstChild.nodeValue;
this.titolo = t;
var ld = nodo.getElementsByTagName("difficolta");
var d = ld[0].firstChild.nodeValue;
this.difficolta = d;
var lto = nodo.getElementsByTagName("tonalita");
var to = lto[0].firstChild.nodeValue;
this.tonalita = to;
var lori = nodo.getElementsByTagName("origine");
var ori = lori[0].firstChild.nodeValue;
this.origine = ori;
var ltesti = nodo.getElementsByTagName("testo");
var testi = ltesti[0].firstChild.nodeValue;
this.testo = testi;
}
}
var ilCanzoniere;
function inizializza() {
var nodo = caricaXML("js/canzoniere.xml");
ilCanzoniere = new canzoniere();
ilCanzoniere.inizializza(nodo);
var lista1 = document.getElementById("selectGenere");
var lista2 = document.getElementById("selectDifficolta");
var lista3 = document.getElementById("selectTonalita");
lista1.innerHTML = ilCanzoniere.elencoGeneri();
lista2.innerHTML = ilCanzoniere.elencodifficolta();
lista3.innerHTML = ilCanzoniere.elencotonalita();
lista1.onchange=ricerca;
lista2.onchange=ricerca;
lista3.onchange=ricerca;
}
window.onload = inizializza;
qui il codice html :
codice:
</head>
<body>
<div id="menu">
<ul>
[*]Home
[*]La guida
[*]Primi passi
<li id="current">Canzoniere galattico
[*]Chitarristi
[*]Contatti[/list]
</div>
<div id="header">
<div id="header2">
</div>
</div>
<div id="divisore">
<h1>Canzoniere</h1>
</div>
<div id="contenuto">
<div id="subcontenuto">
<select id="selectGenere"></select>
<select id="selectDifficolta"></select>
<select id="selectTonalita"></select>
<input id="visualizza" type="button" value="VisualizzaCanzoni">
<h2> canzoni presenti nel nostro database </h2>
<h1> Aggiungi una canzone nella text area per visualizzare gli accordi e modificarla</h1>
<textarea rows="4" cols="50"> </textarea>
</br>
<div id="aumentatore"></div>
-
</div>
<div id="testida"> </div>
</div>
<div id="footer">
</div>
</body>
</html>
Nella text area dovrebbe andarci il valore di this.testo che corrisponde nel XML ad un testo preformattato. consigli su come fare?