webForumDet fria alternativet

Dynamiskt skapa nya rader och fält

JavaScript

5 svar · 573 visningar · startad av jonne

Medlem sedan jan. 20011 154 inlägg
Frågan#1

Jag har ett order formulär där nedanstående rad upprepas 5 gånger

<tr id="tblOrderRow1">
	<td><input type="text" id="ffOrderName1" class="Order_line"  /></td>
	<td><input type="text" id="ffOrderEmail1" class="Order_line" /></td>
	<td><input type="text" id="ffOrderTel1" class="Order_line" /></td>
	<td>
	<select id="ffOrderchoise1" style="width:90px;">
		<option>Val 1</option>
		<option>Val 2</option>				
	</select> 			
	</td>
</tr>

Dock så finns det lägen då dessa 5 borde vara flera, så det jag skulle vilja åstadkomma är att dynamiskt kunna klicka på en länk/knapp för att lägga till eller utöka dessa med ett(1). Oerhört tacksam för all hjälp som finns att få.

Medlem sedan juni 20031 837 inlägg
#2

Sök efter createElement här på forumet så kommer du hitta en massa hjälp om det.
Hinner inte skriva ihop något exempel nu men tänkte att du kanske själv kan få ihop något bara du vet var du ska börja.

Medlem sedan jan. 20011 154 inlägg
#3

Tack för tipset. Fick mig ju att faktiskt lära mig något också ;) Lyckades få ihop det med följande:

function addRowToTable()
{

	var tbl = document.getElementById('tblOrder');
	var lastRow = tbl.rows.length;
	var iteration = lastRow;
	var row = tbl.insertRow(lastRow);
  

	// OrderName
	var cellOrderName = row.insertCell(0);
	var cellElement = document.createElement('input');
	cellElement.type = 'text';
	cellElement.name = 'ffOrderName' + iteration;
	cellElement.id = 'ffOrderName' + iteration;
	cellElement.className = 'Order_line'; 
	cellOrderName.appendChild(cellElement);
  
	// OrderEmail 
	var cellOrderEmail = row.insertCell(1);
	var cellElement = document.createElement('input');
	cellElement.type = 'text';
	cellElement.name = 'ffOrderEmail' + iteration;
	cellElement.id = 'ffOrderEmail' + iteration;
	cellElement.className = 'Order_line';  
	cellOrderEmail.appendChild(cellElement);
	
	// OrderTel
	var cellOrderTel = row.insertCell(2);
	var cellElement = document.createElement('input');
	cellElement.type = 'text';
	cellElement.name = 'ffOrderTel' + iteration;
	cellElement.id = 'ffOrderTel' + iteration;
	cellElement.className = 'Order_line';  
	cellOrderTel.appendChild(cellElement);	
  
	// Select
	var cellOrderPhonetype = row.insertCell(3);
	var cellElement = document.createElement('select');
	cellElement.name = 'ffOrderPhonetype' + iteration;
	cellElement.options[0] = new Option('Välj telefon', '');
	cellElement.options[1] = new Option('Cisco 7905G', 'value0');
	cellElement.options[2] = new Option('Cisco 7940G', 'value1');
	cellElement.options[3] = new Option('Cisco 7960G', 'value1');
	cellElement.options[4] = new Option('Cisco 7920', 'value1');		
	cellOrderPhonetype.appendChild(cellElement);
}

En liten följdfråga dock. Var är rätt syntax för att lägga in styletaggar istället för en css class?

Medlem sedan mars 20007 896 inlägg
#4
element[b].style.fontFamily='Trebuchet MS'[/b];
element[b].style.color='#000000'[/b];
...
Medlem sedan jan. 20011 154 inlägg
#5

Aha man får ta dem en och en. Tackar.

Medlem sedan juni 20031 837 inlägg
#6

/edit ignorera detta

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)