2013-10-11 16 views
0

我有动态HTML的代码,但默认情况下,被当我选择的选项, 的jsfiddle显示的表我无法显示此:http://jsfiddle.net/4DYCm/如何默认显示这个动态表?

HTML:

 <tr> 
    <th>Number of Models:<title="Number of Models"></th> 

    <td><select id="numbermodels" name="numbermodels" autocomplete="off" onchange="buildTable(this.value);" > 

    <option value="1" >1</option > 
    <option value="2" >2</option > 
    <option selected="selected" value="3" >3</option > 
    <option value="4" >4</option > 
    <option value="5" >5</option > 
    <option value="6">6</option > 
    </select></td> 
    </tr> 

<table id="contentTable" border="1" name="contentTable"> 
    <!-- Fill table programmatically --> 
</table> 

的JavaScript:

 function buildTable(val) 
    { 
var myTable =document.getElementById("contentTable"); 
var j=val; 
var rows = []; 
var cells = []; 

    while (myTable.hasChildNodes()) { 
    myTable.removeChild(myTable.lastChild); 
} 


for(var i = 0; i < 1; i++) 
{ 
    rows[i] = myTable.insertRow(i); 
    if(i%3==2)rows[i]; 
    cells[i] = []; 

    for(var x = 0; x < j ; x++) 
    { 
     cells[i][x] =document.createElement((x==0)?"th":"td"); 
     cells[i][x].innerHTML = (x==0)?"<input id=t name=t[] size=3>":"<input id=t1 name=t1[] size=3>"; 
     rows[rows.length - 1].appendChild(cells[i][x]); 
    } 
} 

    } 
buildTable(); 

我试着给onload代替onchange,但是当我给这个,表没有被生成,有人可以告诉我如何默认显示这张表吗?

回答

0

您没有将值传递给该函数,因此val未定义。

var sel = document.getElementById("numbermodels"); 
var value = sel.options[sel.selectedIndex].value; 
buildTable(value); 

这里假定脚本在select和div加载到页面后加载。

http://jsfiddle.net/VC3uM/

+0

上述方案是工作在的jsfiddle,但是当我在我的IE浏览器Firefox的尝试,它不工作,我有同样的问题,该表仅在我选择该选项后才生成,而不是默认情况下,可能是什么原因? – Sachin

+0

@Sachin因为你没有运行onload,或者在页面上呈现元素之后。 – epascarello

+0

您是说,我需要将onchange事件更改为onload,或者无法在浏览器上实现,请解释一下? – Sachin

0

尝试

function createTable(){ 
    var sel = document.getElementById("numbermodels"); 
    var value = sel.options[sel.selectedIndex].value; 
    buildTable(value); 
} 

<td><select id="numbermodels" name="numbermodels" autocomplete="off" onchange="createTable();" >