那是因为你的DIV还没有加载,脚本就执行了,因为没有找到该对象,所以提示undefined
你可以这样:<div  id="a">test</div><script  language="javascript">  
function  test(obj)  
{  
       alert(obj.id); 
}  
 
var  obj  =  document.getElementById("a");  
eval("test("+obj+")");  
</script>

解决方案 »

  1.   

    <div id="a">test</div>
    <script language="javascript"> 
    function test(obj) 

    alert(obj.id); 
    } var obj = document.getElementById("a"); 
    eval("test(obj)"); 
    </script>
      

  2.   

    信誉还可以低到4这种地步。。还误导别人应该是这样
    <script  language="javascript">  
    function  test(obj)  
    {  
           alert(obj.id);  
    }  
     
    var  obj  =  document.getElementById("a");  
    eval("test(obj);");  
    </script>  
    <div  id="a">test</div>  注意,eval()执行的就是JS代码,不用再引用具体变量
      

  3.   


    DIV还要先加载
    <div id="a">test</div> 
    <script language="javascript">function test(obj)
    {
    alert(obj.id);
    }var obj = document.getElementById("a");
    eval("test(obj);");
    </script>
      

  4.   

    如果引号去掉不行的话,那就是div还没生成,如果你把<script>  这里面的代吗放在body中是不行的,页面加载先执行<script>的代码,而你的div还没生成,所以出现undefine
      

  5.   

    让大家见笑了哈, 提问的代码我没试,原来还真的可以啊呵呵...
    在一个Text输入框失去焦点的时候调用getName()方法, 在第一个alert Obj为object, 第二个为undefine, 为什么捏?
    function setName()
    {
        var url = "***";
        test(url, "setName");
    }function test(reqURL, func)
    {
    var xmlObj = createXMLObj();
    if (xmlObj == null) return "";

    xmlObj.onreadystatechange = function()
    {
    if(xmlObj.readyState == 4)
    {
    if (func != null && func != '')
    {
    var obj = xmlObj.responseXML;
                                         alert(obj);
    eval(func + "(eval(" + obj + "))");
    }
    }
    }
    xmlObj.open('GET', reqURL, true);
    xmlObj.send('');
    }function setName(obj)
    {
    alert(obj);
    }
      

  6.   

    你的代码没看见getName()方法,把相关代码,简单的html一起贴出来呀,别的代码就不要贴了
      

  7.   

    DIV没有加载的话,把函数用onload触发不就可以先加载页面,然后取得页面里的div了吗。
      

  8.   

    忙中出错,不好意思function getName()
    {
        var url = "***";
        test(url, "setName");
    }function test(reqURL, func)
    {
    var xmlObj = createXMLObj();
    if (xmlObj == null) return "";

    xmlObj.onreadystatechange = function()
    {
    if(xmlObj.readyState == 4)
    {
    if (func != null && func != '')
    {
    var obj = xmlObj.responseXML;
                                         alert(obj);
    eval(func + "(eval(" + obj + "))");
    }
    }
    }
    xmlObj.open('GET', reqURL, true);
    xmlObj.send('');
    }function setName(obj)
    {
    alert(obj);
    }
      

  9.   

    xmlObj.responseXML
    这个返回的是什么
    也就是alert(obj);这个弹出来的是什么
    两次是一样的吗
      

  10.   

    <div  id="a">test</div>  
    <script  language="javascript">  
    function  test(obj)  
    {  
           alert(obj.id);  
    }  
     
    var  obj  =  document.getElementById("a");  
    eval(test(obj));  
    </script>  
    把引号拿掉啊!
    你这也能算是问题吗?如果要
    eval(test(obj));
    还不如直接
    test(obj) 
      

  11.   

    不要死陷在 eval 上,解决这类问题的办法有很多,比如你把 eval 那句代码换成:(new Function(func +"(obj)"))();
      

  12.   

    梅老大的信誉:
    meizz(梅花雪) ( ) 信誉:707 
    eval只是检索变量,属性,对像,并返回其值,调用DIV,用JS中INNER.HTML会比较好点
      

  13.   

    下面是我对你意思的理解,仅供参考<script  language="javascript">  
    function getHandle(obj){
    var str="handle_"+obj.id
    eval(str+"(obj)")
    }
    function handle_button1(obj){
      alert("乱7八糟"+obj.id)
    }
    function handle_button2(obj){
      alert("啥也不是"+obj.id)
    }
    function handle_button3(obj){
      alert("听到没有"+obj.id)
    }</script>
    <body>
    <input type="button" id="button1" onClick="getHandle(this)" value="button1"/>
    <input type="button" id="button2" onClick="getHandle(this)" value="button2"/>
    <input type="button" id="button3" onClick="getHandle(this)" value="button3"/>
    </body>
      

  14.   

    因为你的DIV还没有加载,脚本就执行了