js appendChild 添加节点没有效果

想试下js里 appendChild()添加节点,结果没有反应,不知道问题处在哪里,火狐IE都没有效果。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>演示</title>
</head>

<script type="text/javascript">

    var node=document.createElement("li"); //创建一个li节点

    var textnode=document.createTextNode("Water"); //创建一个文本节点内容

    node.appendChild(textnode); //将文本节点内容,添加到li节点里面

    document.getElementById("test").appendChild(node); //将li节点,添加到test几点下面

</script>
<body>
    <ul id="test"><li>Coffee</li><li>Tea</li></ul>
</body>
</html> 

html执行代码是按顺序执行的,js代码在body前,所以js执行时,body还没有。这样的话添加元素是无法完成的。
解决办法:

法一:
将js代码放在

html执行代码是按顺序执行的,js代码在body前,所以js执行时,body还没有。这样的话添加元素是无法完成的。
解决办法
法一:
将js代码放在body后面

法二:
给body加一个onload事件,将js代码放在该事件处理函数中即可。

     <ul id="test"><li>Coffee</li><li>Tea</li></ul>
    <script type="text/javascript">

        var node = document.createElement("li"); //创建一个li节点

        var textnode = document.createTextNode("Water"); //创建一个文本节点内容

        node.appendChild(textnode); //将文本节点内容,添加到li节点里面

        document.getElementById("test").appendChild(node); //将li节点,添加到test几点下面

</script>

将js代码放在window.onload = function(){}中。
这样才会在DOM树加载好之后,开始执行函数中的内容。