简单问题,这个js代码为什么放到html文件中就可以用,而放到js文件中则无法使用?

houjianxun 2003-07-30 07:23:02
下面的代码放到html or aspx文件中可以使用
但如果放到一个js文件中,然后
<SCRIPT language="Javascript" src="a.js"></SCRIPT>
则网页提示错误


var h;
var w;
var l;
var t;
var topMar = 1;
var leftMar = -5;
var space = 1;
var isvisible;
var MENU_SHADOW_COLOR='#999999';//定义下拉菜单阴影色
var global = window.document
global.fo_currentMenu = null
global.fo_shadows = new Array

function HideMenu()
{
var mX;
var mY;
var vDiv;
var mDiv;
if (isvisible == true)
{
vDiv = document.all("menuDiv");
mX = window.event.clientX + document.body.scrollLeft;
mY = window.event.clientY + document.body.scrollTop;
if ((mX < parseInt(vDiv.style.left)) || (mX > parseInt(vDiv.style.left)+vDiv.offsetWidth) || (mY < parseInt(vDiv.style.top)-h) || (mY > parseInt(vDiv.style.top)+vDiv.offsetHeight))
{
vDiv.style.visibility = "hidden";
isvisible = false;
}
}
}

function ShowMenu(vMnuCode,tWidth)
{
vSrc = window.event.srcElement;
vMnuCode = "<table id='submenu' cellspacing=1 cellpadding=3 style='width:"+tWidth+"' class=tableborder1 onmouseout='HideMenu()'><tr height=23><td nowrap align=left class=tablebody1 valign=top >" + vMnuCode + "</td></tr></table>";

h = vSrc.offsetHeight;
w = vSrc.offsetWidth;
l = vSrc.offsetLeft + leftMar+4;
t = vSrc.offsetTop + topMar + h + space-2;
vParent = vSrc.offsetParent;
while (vParent.tagName.toUpperCase() != "BODY")
{
l += vParent.offsetLeft;
t += vParent.offsetTop;
vParent = vParent.offsetParent;
}

menuDiv.innerHTML = vMnuCode;
menuDiv.style.top = t;
menuDiv.style.left = l;
menuDiv.style.visibility = "visible";
isvisible = true;
makeRectangularDropShadow(submenu, MENU_SHADOW_COLOR, 4)
}
function makeRectangularDropShadow(el, color, size)
{
var i;
for (i=size; i>0; i--)
{
var rect = document.createElement('div');
var rs = rect.style
rs.position = 'absolute';
rs.left = (el.style.posLeft + i) + 'px';
rs.top = (el.style.posTop + i) + 'px';
rs.width = el.offsetWidth + 'px';
rs.height = el.offsetHeight + 'px';
rs.zIndex = el.style.zIndex - i;
rs.backgroundColor = color;
var opacity = 1 - i / (i + 1);
rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';
el.insertAdjacentElement('afterEnd', rect);
global.fo_shadows[global.fo_shadows.length] = rect;
}
}
...全文
118 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
houjianxun 2003-07-30
  • 打赏
  • 举报
回复
没办法只以放到当前页面中了,感谢bencalie的回答,现在结贴
houjianxun 2003-07-30
  • 打赏
  • 举报
回复
我也是把这段代码放到一个js文件中就有问题,奇怪了。。。。
bencalie 2003-07-30
  • 打赏
  • 举报
回复
No problem

<span id="ID_ShowOnline" onClick="ShowOnline();" style="CURSOR: hand">显示详细列表</span>
<div id="ID_DataList_Online" style="display:none">Online List</div>
<script>
function ShowOnline()
{
if(document.all.item("ID_DataList_Online").style.display!='none')
{
document.all.item("ID_DataList_Online").style.display="none";
document.all.item("ID_ShowOnline").innerText = "显示详细列表";
}
else
{
document.all.item("ID_DataList_Online").style.display="block";
document.all.item("ID_ShowOnline").innerText = "关闭详细列表";
}
}
</script>
houjianxun 2003-07-30
  • 打赏
  • 举报
回复
原因找到了,是因为

使用这个菜单时里面不能有 这样的代码


//=========================================

还有另一个问题需要看贴的朋友帮一下

页面中有一个
<span id="ID_ShowOnline" onClick="ShowOnline();" style="CURSOR: hand">显示详细列表</span>

当调用ShowOnline()时出错,document.all.item("ID_ShowOnline").innerText的时候不能用汉字,如果是E文字母就可以,能解决吗?
function ShowOnline()
{
if(document.all.item("ID_DataList_Online").style.display!='none')
{
document.all.item("ID_DataList_Online").style.display="none";
document.all.item("ID_ShowOnline").innerText = "显示详细列表";
}
else
{
document.all.item("ID_DataList_Online").style.display="block";
document.all.item("ID_ShowOnline").innerText = "关闭详细列表";
}
}
houjianxun 2003-07-30
  • 打赏
  • 举报
回复
连接地址100%地正确,就是不知道哪里的原因
bencalie 2003-07-30
  • 打赏
  • 举报
回复
js文件位置不对?

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧