inserire in un nodo testo un valore creato con una fuction

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Rieccomi, mi sa che questa volta dovete aiutarmi voi... :(

sto cercando di creare uno script che una volta formattato con uno script con replace poi me lo inserisce nelle righe di una tabella dinamica.

HTML:
<html>
<head>

<style>
table.tabella{
	border: 2px solid #CCCCCC;
}
table.tabella th{
	background-color : blue;
	font-size : 16px;
	color : white;
	padding : 2px;
}
table.tabella td{
	background-color : cyan;
	color : back;
	padding : 2px;
}
</style>

<script type='text/javascript'>

function rimpiazza() { 
var miaStringa = document.mioform.testo.value;


miaStringa = miaStringa.replace(/\n/g, "<br/>");
miaStringa = miaStringa.replace(/'/g, "&acute");
miaStringa = miaStringa.replace(/¡/g, "&iexcl");
-------------------------------------------------  
 
document.mioform.risultato.value=miaStringa;

document.getElementById("scritta").innerText = miaStringa;

}


// Creo la tabella

function aggiungiRiga(id_table){
	var table = document.getElementById(id_table);
	var tbody = table.getElementsByTagName('tbody')[0];
	var colonne = table.getElementsByTagName('th').length;	
	var tr = document.createElement('tr');
          tbody.appendChild(tr);


		var td = document.createElement('td');
		var tx = document.createTextNode("'miaStringa'");
		td.appendChild(tx);
		tr.appendChild(td);
                  
               		var td = document.createElement('td');
		var tx = document.createTextNode("altro testo");
		td.appendChild(tx);
		tr.appendChild(td);

	
	
}
</script>

</head>

<body>


	<table border='2' id='my_table' class='tabella' cellspacing='0' cellpadding='0'>
	<thead><tr><th>INTESTAZIONE COLONNA 1</th><th>INTESTAZIONE COLONNA 2</th></tr></thead>
	<tbody>
	
	</tbody>
	</table><br/>
	<input type='button' value='Aggiungi riga' onClick="aggiungiRiga('my_table')" />
    
    
</body>

</html>
Adesso desidero che nel nodo creato :

HTML:
var tx = document.createTextNode(xxxxxxx);
a posto delle xxx... compaia la stringa : miaStringa, creata in precedenza con l'altra funzione...

potete aiutarmi per favore ? Grazie.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

cambia

Codice:
document.getElementById("scritta").innerHTML=miaStringa;

assegnando un nome variabile

Codice:
pippo=document.getElementById("scritta").innerHTML=miaStringa;
fai il replace contrario di < e >

Codice:
function aggiungiRiga(id_table){

pippo=pippo.replace(/\&lt;/g, "<")
pippo=pippo.replace(/\&gt;/g, ">")
dopo richiami pippo nella variabile tx

Codice:
var tx = document.createTextNode(pippo);
Valeria.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

dimenticato il replace inverso di &amp; con &

Codice:
function aggiungiRiga(id_table){

pippo=pippo.replace(/\&lt;/g, "<")
pippo=pippo.replace(/\&gt;/g, ">")
pippo=pippo.replace(/\&amp;/g, "&")
Valeria.
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Fatto e funziona perfettamente, adesso ho tentato invano ( logicamente... ) ad inserire in un'altra cella un valore id che prefisso a monte e aumenta man mano ... per meglio intenderci rimetto script con aggiunta...


HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>TABELLA DINAMICA</title>
<style>
table.tabella{
	border: 0px;
}
table.tabella th{
	
	
	
	padding : 0px;
}
table.tabella td{
		
	padding : 0px;
}
</style>

<script type='text/javascript'>

function rimpiazza() { 
var miaStringa = document.mioform.testo.value;

miaStringa = miaStringa..........
------------
document.mioform.risultato.value=miaStringa;

pippo=document.getElementById("scritta").innerHTML=miaStringa;

}

// e qui voglio inserire la funzione che mi aumenta l'id da mettere man mano... 

    function scrivere() { 
             
          var tot = document.secform.iniz.value;
           id = 10
           id= id++
         document.secform.fine.value=id;
       pluto = document.getElementById("citazione").innerHTML = id;
         } 


// Creo la tabella

function aggiungiRiga(id_table){
            pippo=pippo.replace(/\&lt;/g, "<")
            pippo=pippo.replace(/\&gt;/g, ">")
            pippo=pippo.replace(/\&amp;/g, "&")

	var table = document.getElementById(id_table);
	var tbody = table.getElementsByTagName('tbody')[0];
	var colonne = table.getElementsByTagName('th').length;	
	var tr = document.createElement('tr');
         tbody.appendChild(tr);


		var td = document.createElement('td');
		var tx = document.createTextNode(pluto);  // e qui inserisco il valore "id"
		td.appendChild(tx);
		tr.appendChild(td);
                  
               	var td = document.createElement('td');
		var tx = document.createTextNode(pippo);
		td.appendChild(tx);
		tr.appendChild(td);

               	var td = document.createElement('td');
		var tx = document.createTextNode(';"');
		td.appendChild(tx);
		tr.appendChild(td);
                 


td = document.createElement('td');
   tr.appendChild(td);
   var a = document.createElement('a');
   td.appendChild(a);
   a.href = '#';
   a.onclick = deleteRowFromTbody;
   a.appendChild(document.createTextNode('Elimina'));
   a.className="cancella";

// si nasconde anche la eventuale tabella visualizzata
   // con i dati inseriti e passati a php
   var e = document.getElementById("boxtabella");
   // si controlla se la tabella è visualizzata
   if (e.style.display != 'none' || e.style.visibility != 'hidden')
    {
       e.style.display = 'none';  // si nasconde la tabella
    }

		
}
 

//Cancella la riga corrispondente al link Elimina cliccato
var deleteRowFromTbody = function(){
   //Ottengo il tr dal link
   var tr = this.parentNode.parentNode;
   //Lo cancello
   tr.parentNode.removeChild(tr);
}



//Cancella il tbody creando un altro elemento tbody e sostituendolo
function eliminatabella(id_table)


{   var table = document.getElementById(id_table);
   var tbody = table.getElementsByTagName('tbody')[0];
   var newTbody = document.createElement("tbody");
   tbody.parentNode.replaceChild(newTbody, tbody);
   newTbody.id = "('tbody')";

   // si nasconde anche la eventuale tabella visualizzata
   // con i dati inseriti e passati a php
   var e = document.getElementById("boxtabella");
   e.style.visibility = 'hidden';

}




</script>

</head>

<body>

<form name="mioform">
<textarea name="testo" cols="105" rows="15"></textarea><br><br>
<textarea name="risultato" cols="105" rows="15"></textarea><br><br>
<input type="button" value="Clicca" onclick="rimpiazza();"> <input type="reset" value="Cancella">
</form>


<form name="secform">
<textarea name="iniz" cols="105" rows="15"></textarea><br><br>
<textarea name="fine" cols="105" rows="15"></textarea><br><br>
<input type="button" value="inizia" onclick="scrivere();"> <input type="reset" value="azzera">
</form>





<div id="scritta"></div>


	<table border='0' id='my_table' class='tabella' cellspacing='0' cellpadding='0'>
	<thead><tr><th>INDICE</th><th>TESTO</th><th>TERMINE</th></tr></thead>
	<tbody>
	
	</tbody>
	</table><br/>
	<input type='button' value='Aggiungi riga' onClick="aggiungiRiga('my_table')" />
        <input type='button' value='Elimina Tabella' onClick="eliminatabella('my_table')" />

    
</body>

</html>

Ma non funziona, ho pensato perchè id è una variabile numerica e non passa nel codice del textbox... quindi sempre chiaramente per favore come dovrei fare ??

per far capire a tutti cosa sto facendo è semplicemente questo :
ho un array del tipo :

var frasi = new Array();
frasi[0]= "Se la conoscenza crea problemi, <br> non e' con l'ignoranza che li si risolve";

e tramite questo script faccio il replace ai caratteri e mi creo con una tabella la riga completa da inserire per i nuovi valori dell'array...
prima cella : frasi [id] = "
seconda cella = testo formattato
terza cella : "; che chiude il valore dell'array....
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Preciso che sino alla funzione replace funziona perfettamente grazie alla Sig.ra Valeria....
il problema lo tengo quando voglio aggiungere la funzione scrivere()
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Allora ho risolto il problema del td che non compariva nella cella.. bastava richiamare il valore della variabile con un <div id = "citazione"></div> e il tutto va....

ma come si fa una funzione che con l'onclik avanza di uno ??? :((
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

questo lo provo quando ho tempo, ho visto quattro textarea, un div e l'ultimo esempio postato, comunque non puoi usare lo stesso metodo di replace per una textarea, un div, o un td di una tabella.

il primo esempio postato:

textarea http://users10.jabry.com/vale2/replace.html


div http://users10.jabry.com/vale2/replace1.html


Ultimo http://users10.jabry.com/vale2/replace2.html

nell'ultimo esempio ho solo messo un controllo che non scriva niente se il campo è vuoto.


Controlla, non ho capito quale deve essere il risultato finale, ti servono tutte e quattro le textarea? ti serve il div ecc... tutto in una pagina.

Valeria.
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Salve Valeria, ho risolto il problema come ho scritto...
solo che adesso non so come fare quando inserisco in un form un valore numerico e lui me lo restituisce aumentato di uno , a esempio inserisco 10 e mi esce 11.... e poi questo valore lo devo inserire sempre nella tabella... in altra cella chiaramente.... :)
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

ci sono molti errori, variabili non definite ecc...... non è possibile controllare il tutto in poco tempo,

a me non stampa 11 ma 10 preso da

Codice:
function scrivere() { 
             
          var tot = document.secform.iniz.value;
           id = 10
           id= id++
         document.secform.fine.value=id;
       pluto = document.getElementById("citazione").innerHTML = id;
         }
ti stampa e scrive 10 alla variabile id dai assegnato un valore numerico = a 10

id = id++ non serve a nulla e non aumenta, a meno che tu non lo abbia scritto cosi

id = id+1

come già detto devi usare due codici diversi per le textarea e i testi.

Lo controllo con calma quando ho tempo.

PS: Sig.NA non Sig.ra

Valeria.
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
ascolta ho fatto cosi :


HTML:
    function scrivere(x) {   
            b=1 
              
            a = parseFloat(document.secform.x.value);
           
         c = a + b;
          
         document.secform.fine.value=c;
pluto=document.getElementById("corsa").innerHTML=c;
  
         }
e il form :

HTML:
<form name="secform">
x = <INPUT TYPE="TEXT" SIZE="30" NAME="x">
<input type="button" value="inizia" onclick="scrivere();"> <input type="reset" value="azzera">
<textarea name="fine" cols="105" rows="5"></textarea><br><br>
</form>
adesso solo il metodo per aumentare di uno ogni volta che faccio onclik c'è ??
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
P.s. : chiedo scusa per gli errori e per averti fatto crescere troppo... :)
chiedo venia Sig.na Valeria.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

logica

b = 1

a = quello che scrivi nel campo

c = a + b;

se a = 10 e sommi a + b logico che c torni 11 - 10 + 1


Valeria.
 

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Ok non sono stato chiaro nella domanda.... :)

nello script della somma metto la prima volta il valore ad esempio x = 10
è chiaro che con l'onclik diventa c = 11
ma volevo inserire un altro onclik che man mano faceva diventare c = 12 , c = 13 e cosi via...
spero di essere stato più chiaro .
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

scusa ma andiamo all'infinito, domande esatte.

Un ciclo for può andar bene? for(i=10;i<50;i++) fi cicla incrementando da 10 a 50


Valeria.
 

Vale2

Utente Attivo
28 Mag 2006
446
0
0
Livorno
Ciao,

nessun problema,

avendo uno script con molto codice, i problemi si risolvono per gradi, ogni reply c'è un blocco di istruizioni sostituito.

Per far stampare (nell'esempio numeri che poi associerai alle operazioni che ti servono) da un numero inserito in un campo di un form e visualizzare il risultato (preso da quello che hai scritto) "scrivo 10 voglio vedere i numeri da 10 a tot impostati"

Prendo l'esempio del primo post quello dove c'è la variabile ID.

Fai un ciclo for per contare da tot a tot con incremento, dopo usa la variabile ciclata e la inserisci nelle operazioni da eseguire.

Codice:
function scrivere() { 
    var tot = document.secform.iniz.value;
    for(i=tot;i<50;i++){
    res = document.secform.fine.value+=[i]+" ";
      }
    pluto =  document.getElementById("citazione").innerHTML = res;
   }
la variabile tot recupera i dati inseriti nel campo iniz del form secform

il ciclo for conta i numeri da "numero inserito nel campo" a 49

la variabile res scrive i numeri (a parire dal numero inserito nel campo indicato sopra) nel campo fine form secform

la variabile res scrive il risultato nell'ID citazione.

Se scrivi 20 ti stampa 20 21 22 23 24 25 ............ fino a 49

NOTA: sistema i nomi delle variabili, form id ecc... con quelli che usi.


Valeria.
 
Ultima modifica:

cavaliere123

Utente Attivo
31 Lug 2012
415
0
0
Grazie Valeria.... e scusami ancora...
Sai a teoria sto messo benuccio.... è la sintassi che mi crea tanti problemi e davvero scusami se a volte faccio domande a raffica... non è per mancanza di delicatezza... ma prima di fare domande ti assicuro che ci sono ore davanti al pc a cercare e provare... :)