关于设置div的属性值的问题

我在一个jsp页面通过一个按钮添加一个div,这个按钮的onclick方法执行一段js代码:

 

 var temparray=new Array("行程:","吃:","住:");
    var div=document.createElement("div");
  var table=document.createElement("table");
  for(var i=0;i<3;i++){
    var tr=document.createElement("tr");
 var td1=document.createElement("td");
 td1.innerHTML=temparray[i];
 var td2=document.createElement("td");
 td2.innerHTML="<textarea  ></textarea>";
 tr.insertBefore(td1,null);
 tr.insertBefore(td2,null);
   table.insertBefore(tr,null);
  }
  div.insertBefore(table,null);
  div.style="visibility:hidden";      //第一种写法
 // div.setAttribute("style","visibility:hidden");   //第二种写法
  document.body.insertBefore(div,null);

 

使用第一种写法时不能将div加进来,使用第二种写法却可以加进来,这两种写法有什么区别?

请哪位大哥指教.......谢谢..急用.

 


问题补充:
还有一个问题
我在jsp页面用visibility这个属性控制不同的div显示出现问题,用display这个属性却可以,但我在html页面用visibility却可以
我用一个for循环把几个div隐藏 用visibility这个属性,最后单击不同的按钮要这几个div中指定的一个显示,无法正常显示,换成display这个属性就可以了  .同样的效果在html页面两 个属性都可以.这有什么区别吗?

第一种写法是错误的啊

div.style.visibility="hidden"; //这样写才正确

div.style是一个对象,不是字符串值

也可以这样写
div.style.cssText="visibility:hidden";