Link to home
Start Free TrialLog in
Avatar of srima
srima

asked on

createElement("select") no <option>

while searching the internet for  a script that adds rows and works in most browsers i found this on webxpert.net (by piglet) this works great in adding tr td and inputs,  i´ve manipulated this to add select (pulldown menu) by changing input to select and removing type, text-  but i cant seem to add any options to this can someone please help?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Netscape Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<!-- javascript -->
<script type="text/JavaScript">
<!--

var rowCount = 0;

function insertaRow() {
rowCount++;
var newRow;

newrow = document.createElement("tr");
newrow.setAttribute("id", "row" + rowCount);

itemTD = document.createElement("td");
with (itemINPUT = document.createElement("select")){
      //setAttribute("type", "text");
      setAttribute("maxlength", "3");
      setAttribute("name", "item"+rowCount);
      setAttribute("id", "itemTextId"+rowCount);
      setAttribute("size", "3");
}

itemTD.appendChild(itemINPUT);

itemTD.setAttribute("id","itemRow"+rowCount);
newrow.appendChild(itemTD);

document.getElementById("quoteTableBodyId").appendChild(newrow);
}

// end Helpers -->
</script>

</head>
<body>
<table id="quoteTableId" align="center" cellpadding=0 cellspacing=0>
<tbody id="quoteTableBodyId">
</tbody>
</table>

<table>
<tr>
<td>
<input type="button" value="Add Row" onClick="insertaRow()" style="width:85;">
</td>
</tr>
</table>
</body>
</html>
Avatar of srima
srima

ASKER

also when i try to set the td´s bgcolor attribute with--itemTD.setAttribute("bgcolor", "#778899");
eg--
itemTD = document.createElement("td");
itemTD.setAttribute("bgcolor", "#778899");
with (itemINPUT = document.createElement("select")){
in ie6.0 this dont work but works in netscape7.1,opera7.2 and mozila
-any ideas on how to set the bgcolor attribute in internet explorer?
Avatar of srima

ASKER

its ok i found away to do this--here it is--
itemTD = document.createElement("td");
with (itemSELECT = document.createElement("select")){
     itemSELECT.setAttribute("name", "item"+rowCount);
     itemSELECT.setAttribute("id", "itemTextId"+rowCount);
     itemOPTION1 = document.createElement(¨option¨);
     itemOPTION1.setAttribute(¨id¨,¨opt1¨);
     itemOPTION1.setAttribute(¨value¨,¨blah¨);
     itemOPTION1.appendChild(document.createTextNode(¨blah¨);
     itemSELECT.appendChild(itemOPTION1);
}

itemTD.appendChild(itemSELECT);

itemTD.setAttribute("id","itemRow"+rowCount);
newrow.appendChild(itemTD);

although it gets anoying if you have lots of options it works
if anyones got a better way im all ears
try this

<head>
<script>
function addRow(aTable) {
len=aTable.rows.length
aRow = aTable.insertRow(len);
c1=aRow.insertCell(0)
c1.innerHTML='<select maxlength=3 name="item"'+len+'><option>USA</option><option>CANADA</option></select>'
}
</script>
</head>

<body>
<table id="myTable" name="myTable" border="1">
  <tbody id="myTableTBody" name="myTableTBody">
  </tbody>
</table>
<input type=button id="addRow" value='add row' onClick="addRow(document.getElementById('myTableTBody'))">

</body>
</html>
a non-DOM way:

assuming obj is the select to be fiiled with options:

obj.options[obj.options.length] = new Option("myDescription", "myValue");

the Option constructor has 2 additional optional args to determine if the appended option is selected or not, just see:
http://www.devguru.com/Technologies/ecmascript/quickref/option.html
Hi srima,

  Why didn't you ask piglet to help you modify the script?  I'm positive he would have been more than happy to :D

Vinny
moderator at:
http://www.webxpertz.net/forums
ASKER CERTIFIED SOLUTION
Avatar of modulo
modulo

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial