在其它的容器里可以向上搜索到自己的父节点名称, 但在<script> 里你也没有必要搜索呀.

解决方案 »

  1.   

    你可以通过 parentElement 向上搜索父容器. 比如说这个函数:
    function searchObjByTagName(obj, tag)
    {
      while(obj!=null && typeof(obj.tagName) != "undefind")
      {
        if(obj.tagName == tag.toUpperCase()) return(obj);
        obj = obj.parentElement;
      }
      return null;
    }
      

  2.   

    <div name="aa">
    <SCRIPT LANGUAGE="JavaScript" id="ss">
    <!--
    alert(document.getElementById("ss").parentNode.name);
    //-->
    </SCRIPT>
    </div>
      

  3.   

    可以按照meizz(梅花雪) 的方法遍历查找
      

  4.   

    感谢“梅花雪”“愿赌服输”的热心帮助,不过您的代码对解决问题没有帮助。问题的由来是:代码想知道自己所处的<SCRIPT>对象是谁,比如:函数能知道自己是在哪个<SCRIPT>中定义的。而且这是发生在页面onload之前。
      

  5.   

    这么说吧:
    <SCRIPT id=x>
    var gs="test"
    document.getElementById("x").gs=gs;       // 这是可以的
    //
    </SCRIPT>
      

  6.   

    但是,如果我不知道“x”呢,或者<SCRIPT>根本没有定义id呢?我该如何找到代码当前所在的<SCRIPT>对象呢?
      

  7.   

    那你连这个script的相对位置也不知道吗?
    考虑document.getElementByTargetName("script")[0]
    另外这个变量是全局的,要不考虑变换思路
      

  8.   

    起因是:我的脚本代码是一个单独的文件,是被<SCRIPT>标记通过的src属性引用的。操作中,代码需要为该<SCRIPT>设置某些属性,但在编写时,代码并不知道自己日后会被谁引用,无法通过预设id来访问使用者。而且这一操作还必须在页面onload之前完成。这个需求够变态的吧 ^v^
      

  9.   

    按楼主的说法似乎不太可能啊(我最多只能要么通过id定位,要么就是取parentElement..),但是不能用parentElement,因为上级的不一定就是自己所处的对象容器啊...
      

  10.   

    似乎可以,太好了<SCRIPT>
    var ga=new Array("777","888");
    </SCRIPT><SCRIPT ID=X>
    var n = document.all.tags("script").length;
    document.all.tags("script")[n-1].ga=ga;
    function fnOnload(){
    alert (document.getElementById("x").ga)
    }
    </SCRIPT>
    <BODY ONLOAD=fnOnload()>
    测试能否在script装载时对其属性赋值
    </BODY>
      

  11.   

    <BODY>
    <script id="1">
    function TestFunction() {}
    </script><script>
    var theRegexp = new RegExp((TestFunction + "").replace(/ /g, "").replace(/(\(|\)|\{)/g, "\\$1"), "ig");var scriptElements = document.all.tags("script");for (var i = 0; i < scriptElements.length; i++)
    {
    if (theRegexp.test(scriptElements[i].outerHTML.replace(/ /g, "")))
    alert(scriptElements[i].id);
    }
    </script>
    </BODY>
      

  12.   

    <BODY>
    <script id="script4">
    function TestFunction() 
    {
    alert();
    }
    </script><script>
    var theRegexp = new RegExp((TestFunction + "").replace(/( |\n)/g, "").replace(/(\(|\)|\{)/g, "\\$1"), "ig");var scriptElements = document.all.tags("script");for (var i = 0; i < scriptElements.length; i++)
    {
    if (theRegexp.test(scriptElements[i].outerHTML.replace(/( |\n)/g, "")))
    alert(scriptElements[i].id);
    }
    </script>
    </BODY>
    改两个表达式。不能解析函数重名如果在不同标签中定义了多个相同函数名的函数,以最后一个为准,返回最后一个,另外这只是思路,供参考,里面很多不完善的地方需要修改。
      

  13.   

    既然是src属性引用的,那就用src区别好了。
    for (i=0; i<document.scripts.length; i++)
    {
    alert(document.scripts(i).src);
    }
      

  14.   

    "代码并不知道自己日后会被谁引用"关键在这里可以强制在src的.js文件里写入某个函数,如Get****(),然后就调用这个函数就可以了。一个接口而已