IE中的脚本代码如何知道自己所处的<SCRIPT>对象? 在其它的容器里可以向上搜索到自己的父节点名称, 但在<script> 里你也没有必要搜索呀. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以通过 parentElement 向上搜索父容器. 比如说这个函数:function searchObjByTagName(obj, tag){ while(obj!=null && typeof(obj.tagName) != "undefind") { if(obj.tagName == tag.toUpperCase()) return(obj); obj = obj.parentElement; } return null;} <div name="aa"><SCRIPT LANGUAGE="JavaScript" id="ss"><!-- alert(document.getElementById("ss").parentNode.name);//--></SCRIPT></div> 可以按照meizz(梅花雪) 的方法遍历查找 感谢“梅花雪”“愿赌服输”的热心帮助,不过您的代码对解决问题没有帮助。问题的由来是:代码想知道自己所处的<SCRIPT>对象是谁,比如:函数能知道自己是在哪个<SCRIPT>中定义的。而且这是发生在页面onload之前。 这么说吧:<SCRIPT id=x>var gs="test"document.getElementById("x").gs=gs; // 这是可以的//</SCRIPT> 但是,如果我不知道“x”呢,或者<SCRIPT>根本没有定义id呢?我该如何找到代码当前所在的<SCRIPT>对象呢? 那你连这个script的相对位置也不知道吗?考虑document.getElementByTargetName("script")[0]另外这个变量是全局的,要不考虑变换思路 起因是:我的脚本代码是一个单独的文件,是被<SCRIPT>标记通过的src属性引用的。操作中,代码需要为该<SCRIPT>设置某些属性,但在编写时,代码并不知道自己日后会被谁引用,无法通过预设id来访问使用者。而且这一操作还必须在页面onload之前完成。这个需求够变态的吧 ^v^ 按楼主的说法似乎不太可能啊(我最多只能要么通过id定位,要么就是取parentElement..),但是不能用parentElement,因为上级的不一定就是自己所处的对象容器啊... 似乎可以,太好了<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> <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> <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>改两个表达式。不能解析函数重名如果在不同标签中定义了多个相同函数名的函数,以最后一个为准,返回最后一个,另外这只是思路,供参考,里面很多不完善的地方需要修改。 既然是src属性引用的,那就用src区别好了。for (i=0; i<document.scripts.length; i++){alert(document.scripts(i).src);} "代码并不知道自己日后会被谁引用"关键在这里可以强制在src的.js文件里写入某个函数,如Get****(),然后就调用这个函数就可以了。一个接口而已 鼠标经过图片放大 一个div层随着另一个div层的移动而移动代码 【JS】一种简洁实用的对象设计模型 关于多个表格的显示和隐藏问题。一次只显示一个表格,其他表格均隐藏。 求MzTreeView2.0 如何控制屏蔽一个表格中某一行中所有的控件,比如多选控件 有一个难度很大的问题,请高手解决。如有一个父窗口,要控制子窗口,但我不知子窗口写有什么javascript代码,我就只想不要这个子窗口中的 下拉框select的onChange事件中的问题 关于天数累加的问题 eclipse 里jquery代码提示问题 爆菜问题~! 100分求一个功能强大的在线编辑器
function searchObjByTagName(obj, tag)
{
while(obj!=null && typeof(obj.tagName) != "undefind")
{
if(obj.tagName == tag.toUpperCase()) return(obj);
obj = obj.parentElement;
}
return null;
}
<SCRIPT LANGUAGE="JavaScript" id="ss">
<!--
alert(document.getElementById("ss").parentNode.name);
//-->
</SCRIPT>
</div>
<SCRIPT id=x>
var gs="test"
document.getElementById("x").gs=gs; // 这是可以的
//
</SCRIPT>
考虑document.getElementByTargetName("script")[0]
另外这个变量是全局的,要不考虑变换思路
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>
<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>
<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>
改两个表达式。不能解析函数重名如果在不同标签中定义了多个相同函数名的函数,以最后一个为准,返回最后一个,另外这只是思路,供参考,里面很多不完善的地方需要修改。
for (i=0; i<document.scripts.length; i++)
{
alert(document.scripts(i).src);
}