R roady Medlem sedan jan. 2002 473 inlägg Trådstart 10 maj 2004 14:54 #1 hello...
sitter och pillar med createElement utan större framgång.
har en massa kod som skriver ut ett träd från xml struktur som matas ut från databas, saken är den att den bygger på ul/li taggar och innan namnet på foldern/channel så vill jag ha en kryssruta.
Får det verkligen inte att funka, hur använder man createElement?
function createChannel(elmLI,objNode) {
elmLI.className = (objNode.getAttribute('hidden') == "true") ? "folderhidden" : "folder";
elmLI.innerText = elmLI.dname;
}
R roady Medlem sedan jan. 2002 473 inlägg hur behåller man något och plussar på med innerHtml.
testade med outerHtml för att se vad jag fick fram, min insättning av checkbox funkar men sedan när jag skriver ut text så försvinner den igen.
function createChannel(elmLI,objNode) {
newRadioButton = document.createElement("<INPUT TYPE='checkbox' NAME='tralalala' VALUE='Second Choice'>")
elmLI.insertBefore(newRadioButton);
elmLI.className = (objNode.getAttribute('hidden') == "true") ? "folderhidden" : "folder";
elmLI.innerText = elmLI.dname;
alert("visa mig: " +elmLI.outerHTML);
}
R roady Medlem sedan jan. 2002 473 inlägg woohooo, löste det.
felet är att använde man innerText så skrev man över allt, så då skapa man ett textfält istället och bara lägger till..
typ som
newRadioButton = document.createElement("<input type='checkbox' name='parseMe' value='"+ elmLI.dname +"'>")
elmLI.insertBefore(newRadioButton);
newText = document.createTextNode(elmLI.dname);
elmLI.insertBefore(newText);
R roady Medlem sedan jan. 2002 473 inlägg Har förstått att man skapar formulär saker såhär
var newCheckButton = document.createElement("input");
newCheckButton.setAttribute("type", "checkbox");
newCheckButton.setAttribute("value", elmLI.id);
newCheckButton.setAttribute("id", "parseMe");
dock så fattar jag inte hur jag skall göra om jag vill att den skall vara ikryssad???
P Peter S Medlem sedan dec. 2002 5 483 inlägg Hm, i IE verkar det som att du måste lägga till noden till formuläret innan du sätter egenskapen checked :
var newCheckButton = document.createElement("input");
...
window.onload = function() {
document.forms["formular"].appendChild(newCheckButton);
newCheckButton.setAttribute("checked", "checked");
}
R roady Medlem sedan jan. 2002 473 inlägg javascript är skumt alltså...
gjorde som du skrev, kollar jag efter med outerHTML så ser det helt korrekt ut, CHECKED kommer med och allt, dock så är den inte ikryssad när man tittar på den.
måste man ha den på en onLoad ? problemet är att jag skapar allt dynamiskt och eftersom man klickar runt i trädet så expanderas det dynamiskt och byggs på utan att sidan laddas om
R roady Medlem sedan jan. 2002 473 inlägg jag blir galen *drar i håret*
varför kan jag inte få mina checkboxar ikryssade när de skapas?
tillslut löste det sig, sluta använda createElemen och använd innerHTML istället.
elmLI.innerHTML = "<input type='checkbox' value='"+elmLI.id+"' onclick='inActiveParent(this)' checked>"
P Peter S Medlem sedan dec. 2002 5 483 inlägg Nej, du behöver inte lägga koden i onload. Däremot måste du lägga till noden till formuläret innan du sätter egenskapen i fråga.
Här är ett annat exempel som använder sig av en länk för att expandera formuläret med inputelementet:
<a
href="javascript:void(0)"
onclick="document.forms['[b]formulärnamn[/b]'].appendChild(newCheckButton); newCheckButton.setAttribute('checked', 'checked')"
>Add</a>
Notera att det första kommandot i onclick lägger till noden och det andra sätter egenskapen.