Hmm.. testa att sätta attachEvent() istället, ex.:
[red]inp.attachEvent("onclick", "alert('hej');");[/red]
8 svar · 367 visningar · startad av Web-Tor
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?
Hmm.. testa att sätta attachEvent() istället, ex.:
[red]inp.attachEvent("onclick", "alert('hej');");[/red]
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');
}
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?
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?
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]
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.
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);
}
Jag hittade srcElement och kunde använda detta för att se vilket objekt som triggade onclick. :)