菜单的怪问题:底下部分有个变量chrlpy,如果该变量的值为数值就正常,为字符就出错,但是如果不用变量,直接用字符常量也正常!为什么?
<script language="javascript">
var mmenus = new Array();
var misShow = new Boolean();
misShow=false;
var misdown = new Boolean();
misdown=false;
var musestatus=false;
var mpopTimer = 0;
mmenucolor='#FFFFFF';mfontcolor='#333333';mmenuoutcolor='#f0f0f0';mmenuincolor='#f0f0f0';mmenuoutbordercolor='#000000';mmenuinbordercolor='#333333';mmidoutcolor='#f0f0f0';mmidincolor='#020000';mmenuovercolor='#333333';mitemedge='0';msubedge='1';mmenuunitwidth=140;mmenuitemwidth=160;mmenuheight='';mmenuwidth='100';mmenuadjust=40;mmenuadjustV=0;mfonts='font-family: 宋体; font-size: 9pt; color: #333333; ';mcursor='default';var fadeSteps = 5;
function stoperror(){
return true;
}
window.onerror=stoperror;
function mpopOut() {
mpopTimer = setTimeout('mallhide()', 500);
}
function getReal(el, type, value) {
temp = el;
while ((temp != null) && (temp.tagName != "BODY")) {
if (eval("temp." + type) == value) {
el = temp;
return el;
}
temp = temp.parentElement;
}
return el;
}
function mMenuRegister(menu)
{
mmenus[mmenus.length] = menu
return (mmenus.length - 1)
}
function mMenuItem(caption,command,target,isline,statustxt,img,sizex,sizey,pos){
this.caption=caption;
this.command=command;
this.target=target;
this.isline=isline;
this.statustxt=statustxt;
this.img=img;
this.sizex=sizex;
this.sizey=sizey;
this.pos=pos;
}
function mMenu(caption,command,target,img,sizex,sizey,pos){
this.items = new Array();
this.caption=caption;
this.command=command;
this.target=target;
this.img=img;
this.sizex=sizex;
this.sizey=sizey;
this.pos=pos;
this.id=mMenuRegister(this);
}
function mMenuAddItem(item)
{
this.items[this.items.length] = item
item.parent = this.id;
this.children=true;
}
mMenu.prototype.addItem = mMenuAddItem;
function mtoout(src){
src.style.border='solid 1';
src.style.borderLeftColor=mmenuoutbordercolor;
src.style.borderRightColor=mmenuinbordercolor;
src.style.borderTopColor=mmenuoutbordercolor;
src.style.borderBottomColor=mmenuinbordercolor;
src.style.backgroundColor=mmenuoutcolor;
src.style.color=mmenuovercolor;
}
function mtoin(src){
src.style.border='solid 1';
src.style.borderLeftColor=mmenuinbordercolor;
src.style.borderRightColor=mmenuoutbordercolor;
src.style.borderTopColor=mmenuinbordercolor;
src.style.borderBottomColor=mmenuoutbordercolor;
src.style.backgroundColor=mmenuincolor;
src.style.color=mmenuovercolor;
}
function mnochange(src){
src.style.borderLeftColor=mmenucolor;
src.style.borderRightColor=mmenucolor;
src.style.borderTopColor=mmenucolor;
src.style.borderBottomColor=mmenucolor;
src.style.backgroundColor='';
src.style.color=mfontcolor;
src.style.border='solid 0';
}
function mallhide(){
for(var nummenu=0;nummenu<mmenus.length;nummenu++){
var themenu=document.all['mMenu'+nummenu]
var themenudiv=document.all['mmenudiv'+nummenu]
mnochange(themenu);
mmenuhide(themenudiv);
}
}
function mmenuhide(menuid){
menuid.style.visibility='hidden';
misShow=false;
}
function mmenushow(menuid,pid){
menuid.style.left=mposflag.offsetLeft+mmenuadjust+parseInt(mmenuwidth)+1;menuid.style.top=mposflag.offsetTop+pid.offsetTop+mmenuadjustV;
if(mmenuitemwidth+parseInt(menuid.style.left)>document.body.clientWidth+document.body.scrollLeft)
menuid.style.left=document.body.clientWidth+document.body.scrollLeft-mmenuitemwidth;
menuid.style.visibility='visible';
misShow=true;
}
function mmenu_over(menuid,x){
toel = getReal(window.event.toElement, "className", "coolButton");
fromel = getReal(window.event.fromElement, "className", "coolButton");
if (toel == fromel) return;
if(x<0){
misShow = false;
mallhide();
mtoout(eval("mMenu"+x));
}else{
mallhide();
mtoin(eval("mMenu"+x));
mmenushow(menuid,eval("mMenu"+x));
}
clearTimeout(mpopTimer);
}
问题点数:100、回复次数:7Top
1 楼lipingyuan22()回复于 2005-06-02 09:49:17 得分 0
代码接上:
function mmenu_out(x){
toel = getReal(window.event.toElement, "className", "coolButton");
fromel = getReal(window.event.fromElement, "className", "coolButton");
if (toel == fromel) return;
if (misShow){
mtoin(eval("mMenu"+x));
}else{
mnochange(eval("mMenu"+x));
}
mpopOut()
}
function mmenu_down(menuid,x){
if(misShow){
mmenuhide(menuid);
mtoout(eval("mMenu"+x));
}
else{
mtoin(eval("mMenu"+x));
mmenushow(menuid,eval("mMenu"+x));
misdown=true;
}
}
function mmenu_up(){
misdown=false;
}
function mmenuitem_over(x,i){
srcel = getReal(window.event.srcElement, "className", "coolButton");
if(misdown){
mtoin(srcel);
}
else{
mtoout(srcel);
}
mthestatus = mmenus[x].items[i].statustxt;
if(mthestatus!=""){
musestatus=true;
window.status=mthestatus;
}
clearTimeout(mpopTimer);
}
function mmenuitem_out(){
srcel = getReal(window.event.srcElement, "className", "coolButton");
mnochange(srcel);
if(musestatus)window.status="";
mpopOut()
}
function mmenuitem_down(){
srcel = getReal(window.event.srcElement, "className", "coolButton");
mtoin(srcel)
misdown=true;
}
function mmenuitem_up(){
srcel = getReal(window.event.srcElement, "className", "coolButton");
mtoout(srcel)
misdown=false;
}
function mexec2(x){
var cmd;
if(mmenus[x].target=="blank"){
cmd = "window.open('"+mmenus[x].command+"')";
}else{
cmd = mmenus[x].target+".location=\""+mmenus[x].command+"\"";
}
eval(cmd);
}
function mexec(x,i){
var cmd;
if(mmenus[x].items[i].target=="blank"){
cmd = "window.open('"+mmenus[x].items[i].command+"')";
}else{
cmd = mmenus[x].items[i].target+".location=\""+mmenus[x].items[i].command+"\"";
}
eval(cmd);
}
function mbody_click(){
if (misShow){
srcel = getReal(window.event.srcElement, "className", "coolButton");
for(var x=0;x<=mmenus.length;x++){
if(srcel.id=="mMenu"+x)
return;
}
mallhide();
}
}
document.onclick=mbody_click;
Top
2 楼lipingyuan22()回复于 2005-06-02 09:49:36 得分 0
代码再接上:
function mwritetodocument(){
var mwb=1;
var stringx='<div id="mposflag" style="position:absolute;"></div><table background="1.jpg" id=mmenutable border=0 cellpadding=3 cellspacing=2 width='+mmenuwidth+' height='+mmenuheight+' bgcolor='+mmenucolor+
' onselectstart="event.returnValue=false"'+
' style="cursor:'+mcursor+';'+mfonts+
'padding:0px"><tr>'
for(var x=0;x<mmenus.length;x++){
var thismenu=mmenus[x];
var imgsize="";
if(thismenu.sizex!="0"||thismenu.sizey!="0")imgsize=" width="+thismenu.sizex+" height="+thismenu.sizey;
var ifspace="";
if(thismenu.caption!="")ifspace=" ";
stringx += "<td nowrap class=coolButton id=mMenu"+x+" width="+mmenuunitwidth+"px height=24px onmouseover=mmenu_over(mmenudiv"+x+
","+x+") onmouseout=mmenu_out("+x+
") onmousedown=mmenu_down(mmenudiv"+x+","+x+")";
if(thismenu.command!=""){
stringx += " onmouseup=mmenu_up();mexec2("+x+");";
}else{
stringx += " onmouseup=mmenu_up()";
}
if(thismenu.pos=="0"){
stringx += " align=left><img align=absmiddle src='"+thismenu.img+"'"+imgsize+">"+"<font color='#333333'>"+ifspace+thismenu.caption+"</font></td>";
}else if(thismenu.pos=="1"){
stringx += " align=left>"+thismenu.caption+ifspace+"<img align=absmiddle src='"+thismenu.img+"'"+imgsize+"></td>";
}else if(thismenu.pos=="2"){
stringx += " align=left background='"+thismenu.img+"'> "+"<font color='#333333'>"+thismenu.caption+" </font></td>";
}else{
stringx += " align=left> "+thismenu.caption+" </td>";
}
stringx += "</tr><tr>";
}
stringx+="</tr></table>";
for(var x=0;x<mmenus.length;x++){
thismenu=mmenus[x];
if(x<0){
stringx+='<div id=mmenudiv'+x+' style="visiable:none"></div>';
}else{
stringx+='<div id=mmenudiv'+x+
' style="cursor:'+mcursor+';position:absolute;'+
'width:'+mmenuitemwidth+'px; z-index:'+(x+100);
if(mmenuinbordercolor!=mmenuoutbordercolor&&msubedge=="0"){
stringx+=';border-left: 1px solid '+mmidoutcolor+
';border-top: 1px solid '+mmidoutcolor;}
stringx+=';border-right: 1px solid '+mmenuinbordercolor+
';border-bottom: 1px solid '+mmenuinbordercolor+';visibility:hidden" onselectstart="event.returnValue=false">\n'+
'<table background="2.jpg" width="100%" border="0" height="100%" align="center" cellpadding="0" cellspacing="2" '+
'style="'+mfonts+' border-left: 1px solid '+mmenuoutbordercolor;
if(mmenuinbordercolor!=mmenuoutbordercolor&&msubedge=="0"){
stringx+=';border-right: 1px solid '+mmidincolor+
';border-bottom: 1px solid '+mmidincolor;}
stringx+=';border-top: 1px solid '+mmenuoutbordercolor+
';padding: 4px" bgcolor='+mmenucolor+'>\n'
for(var i=0;i<thismenu.items.length;i++){
var thismenuitem=thismenu.items[i];
var imgsize="";
if(thismenuitem.sizex!="0"||thismenuitem.sizey!="0")imgsize=" width="+thismenuitem.sizex+" height="+thismenuitem.sizey;
var ifspace="";
if(thismenu.caption!="")ifspace=" ";
if(!thismenuitem.isline){
stringx += "<tr><td class=coolButton style='border: "+mitemedge+"px solid "+mmenucolor+
"' width=100% height=24px onmouseover=\"mmenuitem_over("+x+","+i+
");\" onmouseout=mmenuitem_out() onmousedown=mmenuitem_down() onmouseup=";
stringx += "mmenuitem_up();mexec("+x+","+i+"); ";
if(thismenuitem.pos=="0"){
stringx += "><img align=absmiddle src='"+thismenuitem.img+"'"+imgsize+">"+"<font color=#333333>"+ifspace+thismenuitem.caption+"</font></td></tr>";
}else if(thismenuitem.pos=="1"){
stringx += ">"+thismenuitem.caption+ifspace+"<img align=absmiddle src='"+thismenuitem.img+"'"+imgsize+"></td></tr>";
}else if(thismenuitem.pos=="2"){
stringx += "background='"+thismenuitem.img+"'>"+"<font color=#333333>"+thismenuitem.caption+"</font></td></tr>";
}else{
stringx += ">"+"<font color=#000000>"+thismenuitem.caption+"</font></td></tr>";
}
}else{
stringx+='<tr><td height="0" background="2.jpg" onmousemove="clearTimeout(mpopTimer);"><img height="1" width="1" src="2.jpg" border="0"></td></tr>\n';
}
}stringx+='</table>\n</div>'
}
}
document.write("<div align='left'>"+stringx+"</div>");
}
mpmenu1=new mMenu('·'+"ASP",'','self','','','','');
<%
chrlpy="455"
%>
mpmenu1.addItem(new mMenuItem(<%response.write(chrlpy)%>,'pplist.asp?sort1=10&sort2=40','self',false,'','','','',''));
mwritetodocument();
mpopOut();
</script>Top
3 楼lipingyuan22()回复于 2005-06-02 09:53:41 得分 0
以上代码顺序连接保存ASP文件可以调试的,如果变量chrlpy为数值就正常显示,为字符或者汉字就不能正常显示(网上有错误),但是我不用变量,直接在变量处用字符或者汉字又可以正常显示哦,怎么这么怪呢?我要求用变量的时候也可以显示,请高手们解决,通过后我给100分!Top
4 楼dengboyu(小雨)回复于 2005-06-02 10:08:41 得分 0
变量调用的标志符号不正确了。看是双引号还是单引号 或需要&&来说明的Top
5 楼lipingyuan22()回复于 2005-06-02 10:30:56 得分 0
能解决的高手们请具体改写变量部分!Top
6 楼zhaojinhai(云开雾散)回复于 2005-06-02 16:17:43 得分 100
www.xinxi168.comTop
7 楼lipingyuan22()回复于 2005-06-02 16:22:02 得分 0
自己解决!揭贴Top




