webForumDet fria alternativet

Lägga till onclick

JavaScriptur Javascript

8 svar · 367 visningar · startad av Web-Tor

Medlem sedan nov. 200013 890 inlägg
Frågan#1

Undrar hur man lägger till ett onclick-event på en radio:

inp = document.createElement('input');
inp.setAttribute('type', "radio");
inp.setAttribute('name', "causal");
inp.setAttribute('className', "noborder");

inp.setAttribute('onclick', "alert('hej');"); [red]/* « ??? */[/red]

cell.appendChild(inp);

Någon som vet?

Medlem sedan apr. 20003 174 inlägg
#2

Hmm.. testa att sätta attachEvent() istället, ex.:

[red]inp.attachEvent("onclick", "alert('hej');");[/red]
Medlem sedan nov. 200013 890 inlägg
#3

Jag var inne och nosade på attachEvent men fick det aldrig att funka. Läste lite till nu och upptäckte hur jag skulle göra. Så här blev det:

inp.attachEvent('onclick', e);

function e(){
	alert('hej');
}
Medlem sedan nov. 200013 890 inlägg
#4

Jag har dock upptäckt ett problem till. Radio-rutan markeras inte när man klickar på den. Den blir grå när man trycker ner men sedan blir där inte någon svart prick när man släpper musknappen.
Måste man ange något mer när man skapar en radio?

Medlem sedan nov. 200013 890 inlägg
#5

Testa den här koden:

<script>
function fnAdd()
{
	var tbl = document.getElementById('tblAssessment');
	var inp = document.createElement("input");
	inp.setAttribute('type', "radio");
	inp.setAttribute('name', "namn");

	tbl.rows[0].cells[0].insertAdjacentElement("afterBegin",inp);
}
</script>

<body>

<table border="1" id="tblAssessment">
	<tr>
		<td>1</td>
	</tr>
</table>

<input type="button" value="Add Item" onclick="fnAdd()">

</body>

Varför går det inte att markera någon av radio-rutorna?

Medlem sedan apr. 20003 174 inlägg
#6

Hmm.. tydligen kan man inte sätta namn dynamiskt så i DOM´en.
Testa istället:

[red]<script>
function fnAdd()
{
	var tbl = document.getElementById('tblAssessment');
	[b]var inp = document.createElement("<input name=namn>");[/b]
	inp.setAttribute('type', "radio");
	tbl.rows[0].cells[0].insertAdjacentElement("afterBegin",inp);
}
</script>

<body>

<table border="1" id="tblAssessment">
	<tr>
		<td>1</td>
	</tr>
</table>

<input type="button" value="Add Item" onclick="fnAdd()">

</body>[/red]
Medlem sedan nov. 200013 890 inlägg
#7

Du har rätt!
Hittade detta på MSDN:

The NAME attribute cannot be set at run time on elements dynamically created with the createElement method. To create an element with a name attribute, include the attribute and value when using the createElement method.

Tack för hjälpen Palle! :)

Markerar ändå mitt eget inlägg som rätt svar eftersom lösningen på mitt första problem finns där.

Medlem sedan nov. 200013 890 inlägg
#8

Nu har jag ett litet problem till att lösa. Jag vill ha reda på i vilken tagg <input>-taggen ligger.

Hade jag haft en vanlig radio i min HTML-fil hade jag bara skrivit:

<input type="radio" onclick="e(this);">

Nu har jag ju skapat <input>-taggen via ett skript. Hur gör jag då?

inp.attachEvent('onclick', e);
function e(){
	alert(XXX.parentElement.tagName);
}
Medlem sedan nov. 200013 890 inlägg
#9

Jag hittade srcElement och kunde använda detta för att se vilket objekt som triggade onclick. :)

137 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)