你把循环拿出来赋值----(下边是我改过的,你看看可以不?)
var temp_options=""
                     for(var g=0;g<arr.length;g++){
temp_options=temp_options+"<option value='"+arr[g]+"' text='"+arr[g]+"'>"+arr[g]+"</option>";

newCell.innerHTML="<input type='hidden' name='supplier_id"+line+"' readonly='readonly'   value='' >"+"<select>"+ temp_options+"</select>";}

解决方案 »

  1.   

    给你个例子
    <form name="Form1">
    <select name="Select1">
    </select>
    </form><SCRIPT>
    function CreateHtml()
    {
    var thisObject=eval('Form1.Select1') thisObject.options.length=0;
    thisObject.options[0]=new Option("请选择",""); var returnvalue = "aa#bb#cc"  //-->这是你得到的字符串或数组
    var m = returnvalue.split("#");
    var len=m.length; for (i=0;i<len;i++)
    {
    thisObject.options.add(new Option(m[i],m[i],true,true));
    }}
    CreateHtml()
    </script>
      

  2.   

    因为写再里边只是单纯的实行循环,并没有把每一次循环的纸都记录下来,但是却记录了最后一条的数据,这样,到最后一条执行完了的时候,循环还是会在g上加1返回for,但是不符合循环的条件,就跳出循环,这是后留下的最后一条纪录是空的,所以就没有值会显示出来!