it's a nasty way of adding rows to a table, anyway (if you look at your current code, it creates a new tbody every time a row is added), and it will fail in IE (because rom what I understand IE cannot make "nested" elements - like <tr><td></td></tr> - using innerHTML
AND if you click the first button twice, you succeed in making two inputs with the id "outcome1"
this, I think, is a better approach, which solves all the above plus your initial problem...
Code:
<body>
<form>
<table id="tablebox">
<tr>
<td><input type="text" id="outcome0"></td>
<td><input type="button" value="Add" onclick="AddRow()"></td>
</tr>
</table>
</form>
<input type="submit" value="done" onclick="submitForm"><br>
<script>
var count=0;
function AddRow(someID){
count++;
var therow=document.createElement("tr");
var cellone=document.createElement("td");
cellone.innerHTML = "<input type='text' id='outcome"+count + "'>"
var celltwo=document.createElement("td");
celltwo.innerHTML ="<input type='button' value='Add' onclick='AddRow()'>";
therow.appendChild(cellone);
therow.appendChild(celltwo);
document.getElementById("tablebox").getElementsByTagName("tbody")[0].appendChild(therow);
}
</script>
</body>