首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

封装了一个漂浮对联广告JAVASCRIPT类,设置onclick事件不生效,请教JAVASCRIPT类是怎样处理onclick事件的

2012-02-16 
求助:封装了一个漂浮对联广告JAVASCRIPT类,设置onclick事件不生效,请问JAVASCRIPT类是怎样处理onclick事件

求助:封装了一个漂浮对联广告JAVASCRIPT类,设置onclick事件不生效,请问JAVASCRIPT类是怎样处理onclick事件的
各位专家:
  由于工作需要,最主要的是为方便代码的管理,最近参考了一些专家的贴子,做了一个漂浮对联广告的JAVASCRIPT类.功能是基本实现了,但在增加一个关闭按钮时,onclick事件不生效,在网上找了好多资料,都找不到合适的。因为网上的对联广告很少是封装成JAVASCRIPT类的。郁闷之下,来这里求救,请各位施主,有心出智慧,有心而无力帮忙顶下该贴。谢谢!!另外附上我写的JAVASCRIPT类,需要的可以参考。代码如下:
<Script Language=Javascript>
<!--
//漂浮对联广告JS封装类(Author:colinmok Time:2008-04-24日)
function SmileAdver_Class(){
 var leftImageArray = new Array(); //保存左边的广告图片数组
 var rightImageArray = new Array(); //保存右边的广告图片数组
 var leftPos,rightPos; //leftPos = 左边广告的距左边栏位置(px) rightPos = 右边广告的距右边栏位置(px)
 var leftTop,rightTop; //leftTop = 左边广告的距顶边栏位置(px) rightTop = 右边广告的距顶边栏位置(px)
 var lastScrollY=0; 
 
 leftPos = rightPos = 1; //默认为10
 leftTop = rightTop = 1; //默认为150
 this.setLeftPos = function(value){
  if(isNaN(value)){value = 10;} //非数字则默认为10
  leftPos = value;
 }
 this.setRightPos = function(value){
  if(isNaN(value)){value = 10;} //非数字则默认为10
  rightPos = value;
 }
 this.setLeftTop = function(value){
  if(isNaN(value)){value = 1} //非数字则默认为150
  leftTop = value;
 }
 this.setRightTop = function(value){
  if(isNaN(value)){value = 1;} //非数字则默认为150
  rightTop = value;
 }
 //添加左边的图片广告 addLeftImage(链接,图片地址,链接目标,图片提示,图片宽度,图片高度)
 this.addLeftImage = function(href,image,target,title,width,height){
var imageArray = getImageArray(href,image,target,title,width,height);
if(imageArray != null){
leftImageArray[leftImageArray.length] = imageArray;
}
 }
 //添加右边的图片广告 addRightImage(链接,图片地址,链接目标,图片提示,图片宽度,图片高度)
 this.addRightImage = function(href,image,target,title,width,height){
  var imageArray = getImageArray(href,image,target,title,width,height);
  if(imageArray != null){
  rightImageArray[rightImageArray.length] = imageArray;
  }
 }
 //内部添加广告图片使用,如果没有图片地址,则返回一个null值,否则返回一个数组
 function getImageArray(href,image,target,title,width,height){
if(image == undefined){return null;} //没有图片地址,不添加
if(target == undefined || target == ""){target = "_blank"}; //默认为_blank打开方式
target = " target=\"" + target + "\"";
if(title == undefined){ //广告图片title提示
title = "" ;
}else{
title = " title=\"" + title + "\"";
}
//链接以www.开头则自动加上http:// (否则链接时会链接错误)
if(href.toLowerCase().substring(0,4) == "www."){
href = "http://" + href;
}
if(image.toLowerCase().substring(0,4) == "www."){
image = "http://" + image;
}
return new Array(href,image,target,title,width,height);
 }
 //内部显示图片横幅所用 showImageDiv(div的名称,div的摆放方向(left,right),div的摆放位置,div层距顶部的位置,显示的图片数组变量)
 function showImageDiv(div,pos,posPX,topPx,imageArray){
var i;
var extendname;
document.write("<div id=\"" + div + "\" style=\"" + pos + ":" + posPX + "px;POSITION:absolute;TOP:" + topPx + "px;\">");
for(i=0; i< imageArray.length; i++){
//20080424日colinmok修改
extendname=getExtendName(imageArray[i][1]);
if(extendname=='swf'||extendname=='SWF'){
document.write(
'<button style="width:'+imageArray[i][4]+'px;height:'+imageArray[i][5]+
'px;background:transparent;border:0px;padding:0px;cursor:hand;margin:0px;" onfocus="this.blur();" onclick="window.open(\''+imageArray[i][0]+'\');">' + 
'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+


'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"'+
'width="'+ imageArray[i][4] +'"'+
'height="'+ imageArray[i][5] +'">'+
'<param name="movie" value="'+ imageArray[i][1] +'">'+
'<param name="quality" value="high">'+
'<param name="wmode" value="opaque" />'+
'<embed src="'+ imageArray[i][1] +'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+ imageArray[i][4] +'" height="'+ imageArray[i][5] +'">'+
'</embed>'+
'</object>'+
'</button>');
}else{
document.write("<a href=\"" + imageArray[i][0] + "\" "+ imageArray[i][2]+ imageArray[i][3] + "><img src=\""+ imageArray[i][1] + "\" border=\"0\" "+ imageArray[i][3] + "></a>");
}
document.write("<br/><a href='#' onClick='hide();' alt='关闭对联广告'>关闭</a>");
if(i != imageArray.length-1){
document.write("<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td height=10></td></tr></table>");
}
}
document.write("</div>");
 
 }
  //滚动广告对联图片
 this.scroll = function(){
showImageDiv("smilediv1","left",leftPos,leftTop,leftImageArray);
showImageDiv("smilediv2","right",rightPos,rightTop,rightImageArray);
window.setInterval(scrollImage,1);//滚动
 }
 this.scrollImg= function(){
scrollImage();
 }
 //内部使用用来滚动广告图片
 function scrollImage(){
var diffY,percent;
diffY=document.body.scrollTop; 
percent=.1*(diffY-lastScrollY); 
if(percent>0)percent=Math.ceil(percent); 
else percent=Math.floor(percent); 
document.all.smilediv1.style.pixelTop+=percent; 
document.all.smilediv2.style.pixelTop+=percent;  
lastScrollY=lastScrollY+percent;
  }
  //采用正则表达式,来去除两边的空格,只需以下代码(colinmok增加20080424)
  String.prototype.trim = function(){ 
return this.replace(/(^\s*)|(\s*$)/g,""); 
  }
  //外部使用:赋值时,截取广告的图片或动画的扩展名(colinmok增加20080424)
  this.setExtendName=function(value){
var strUrl;
strUrl=value.trim();
var pointNum=strUrl.lastIndexOf(".");
var tempstr=strUrl.substr(pointNum+1,strUrl.length);
extendName=tempstr;
  }
  //内部使用:截取广告的图片或动画的扩展名(colinmok增加20080424)
  function getExtendName(value){
var strUrl;
strUrl=value.trim();
var pointNum=strUrl.lastIndexOf(".");
var tempstr=strUrl.substr(pointNum+1,strUrl.length);
return tempstr;
  }
  //关闭对联广告(colinmok增加20080424)
  //function hide()
  //SmileAdver_Class.prototype.hide=function()
  //this.hide=function()
  SmileAdver_Class.prototype.hide=function()//注意:此处关闭对联广告用,但没生效,不道是啥原因,请大家帮忙解决下。---2008-04-25 colinmok求救
  {
alert('隐藏函');
document.getElementById('smilediv1').style.visibility='hidden'; 
document.getElementById('smilediv2').style.visibility="hidden"; 
  }
}
///////////////////////////////////////////类结束////////////////////////////////////////////////////////////////

 

 




/////////类的使用示例代码(测试用)////////////////////////////////////////////////
var SmileAdver = new SmileAdver_Class();
SmileAdver.setLeftPos(5);
SmileAdver.setRightPos(5);


SmileAdver.setLeftTop(400);
SmileAdver.setRightTop(400);
SmileAdver.addLeftImage("http://www.baidu.com","flash.swf","","测试","100","200");
SmileAdver.addRightImage("http://www.baidu.com","logo.gif","","测试","100","200");
SmileAdver.scroll();
-->
</Script>

说明:该文件为测试文件,保存为htm即可测试,上面的各参数说明:广告链接,广告源地址,在那个窗口打开(为空即在新窗口打开),图片广告时为alt标题(动画时用不上),图片宽度,图片高度。分数不多,就20分,请高手不要嫌弃。谢谢!


[解决办法]
看看:

<Script Language=Javascript> 
<!-- 
//漂浮对联广告JS封装类(Author:colinmok Time:2008-04-24日) 
function SmileAdver_Class(){ 
 var leftImageArray = new Array(); //保存左边的广告图片数组 
 var rightImageArray = new Array(); //保存右边的广告图片数组 
 var leftPos,rightPos; //leftPos = 左边广告的距左边栏位置(px) rightPos = 右边广告的距右边栏位置(px) 
 var leftTop,rightTop; //leftTop = 左边广告的距顶边栏位置(px) rightTop = 右边广告的距顶边栏位置(px) 
 var lastScrollY=0;
  
 leftPos = rightPos = 1; //默认为10 
 leftTop = rightTop = 1; //默认为150 
 this.setLeftPos = function(value){ 
if(isNaN(value)){value = 10;} //非数字则默认为10 
leftPos = value; 
 } 
 this.setRightPos = function(value){ 
if(isNaN(value)){value = 10;} //非数字则默认为10 
rightPos = value; 
 } 
 this.setLeftTop = function(value){ 
if(isNaN(value)){value = 1} //非数字则默认为150 
leftTop = value; 
 } 
 this.setRightTop = function(value){ 
if(isNaN(value)){value = 1;} //非数字则默认为150 
rightTop = value; 
 } 
 //添加左边的图片广告 addLeftImage(链接,图片地址,链接目标,图片提示,图片宽度,图片高度) 
 this.addLeftImage = function(href,image,target,title,width,height){ 
 var imageArray = getImageArray(href,image,target,title,width,height); 
 if(imageArray != null){ 
 leftImageArray[leftImageArray.length] = imageArray; 
 } 
 } 
 //添加右边的图片广告 addRightImage(链接,图片地址,链接目标,图片提示,图片宽度,图片高度) 
 this.addRightImage = function(href,image,target,title,width,height){ 
var imageArray = getImageArray(href,image,target,title,width,height); 
if(imageArray != null){ 
rightImageArray[rightImageArray.length] = imageArray; 

 } 
 //内部添加广告图片使用,如果没有图片地址,则返回一个null值,否则返回一个数组 
 function getImageArray(href,image,target,title,width,height){ 
if(image == undefined){return null;} //没有图片地址,不添加 
if(target == undefined || target == ""){target = "_blank"}; //默认为_blank打开方式 
target = " target=\"" + target + "\""; 
if(title == undefined){ //广告图片title提示 
title = "" ; 
}else{ 
title = " title=\"" + title + "\""; 

//链接以www.开头则自动加上http:// (否则链接时会链接错误) 
if(href.toLowerCase().substring(0,4) == "www."){ 
href = "http://" + href; 

if(image.toLowerCase().substring(0,4) == "www."){ 
image = "http://" + image; 

return new Array(href,image,target,title,width,height); 
 } 
 //内部显示图片横幅所用 showImageDiv(div的名称,div的摆放方向(left,right),div的摆放位置,div层距顶部的位置,显示的图片数组变量) 
 function showImageDiv(div,pos,posPX,topPx,imageArray){ 
var i; 
var extendname; 
document.write(" <div id=\"" + div + "\" style=\"" + pos + ":" + posPX + "px;POSITION:absolute;TOP:" + topPx + "px;\">"); 


for(i=0; i < imageArray.length; i++){ 
//20080424日colinmok修改 
 extendname=getExtendName(imageArray[i][1]); 
 if(extendname=='swf'||extendname=='SWF'){
 document.write( 
' <button style="width:'+imageArray[i][4]+'px;height:'+imageArray[i][5]+ 
'px;background:transparent;border:0px;padding:0px;cursor:hand;margin:0px;" onfocus="this.blur();" onclick="window.open

(\''+imageArray[i][0]+'\');">' +
' <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+ 
'codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0"'+ 
'width="'+ imageArray[i][4] +'"'+ 
'height="'+ imageArray[i][5] +'">'+ 
' <param name="movie" value="'+ imageArray[i][1] +'">'+ 
' <param name="quality" value="high">'+ 
' <param name="wmode" value="opaque" />'+ 
' <embed src="'+ imageArray[i][1] +'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-

shockwave-flash" width="'+ imageArray[i][4] +'" height="'+ imageArray[i][5] +'">'+ 
' </embed>'+ 
' </object>'+ 
' </button>'); 
 }else{ 
 document.write(" <a href=\"" + imageArray[i][0] + "\" "+ imageArray[i][2]+ imageArray[i][3] + "> <img src=\""+ imageArray[i][1] + "\" 

border=\"0\" "+ imageArray[i][3] + "> </a>"); 
 } 
 document.write(" <br/> <a href='#' onClick='hide();' alt='关闭对联广告'>关闭 </a>"); 
 if(i != imageArray.length-1){ 
document.write(" <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"> <tr> <td height=10> </td> </tr> </table>"); 
 } 

document.write(" </div>"); 
 
 } 
//滚动广告对联图片 
 this.scroll = function(){ 
showImageDiv("smilediv1","left",leftPos,leftTop,leftImageArray); 
showImageDiv("smilediv2","right",rightPos,rightTop,rightImageArray); 
window.setInterval(scrollImage,1);//滚动 
 } 
 this.scrollImg= function(){ 
 scrollImage(); 
 } 
 //内部使用用来滚动广告图片 
 function scrollImage(){ 
var diffY,percent; 
diffY=document.body.scrollTop;
percent=.1*(diffY-lastScrollY);
if(percent>0)percent=Math.ceil(percent);
else percent=Math.floor(percent);
document.all.smilediv1.style.pixelTop+=percent;
document.all.smilediv2.style.pixelTop+=percent;
lastScrollY=lastScrollY+percent; 

//采用正则表达式,来去除两边的空格,只需以下代码(colinmok增加20080424) 
String.prototype.trim = function(){
 return this.replace(/(^\s*) ¦(\s*$)/g,"");

//外部使用:赋值时,截取广告的图片或动画的扩展名(colinmok增加20080424) 
this.setExtendName=function(value){ 
var strUrl; 
strUrl=value.trim(); 
var pointNum=strUrl.lastIndexOf("."); 
var tempstr=strUrl.substr(pointNum+1,strUrl.length); 
extendName=tempstr; 

//内部使用:截取广告的图片或动画的扩展名(colinmok增加20080424) 
function getExtendName(value){ 
var strUrl; 
strUrl=value.trim(); 
var pointNum=strUrl.lastIndexOf("."); 
var tempstr=strUrl.substr(pointNum+1,strUrl.length); 
return tempstr; 



//关闭对联广告(colinmok增加20080424) 
//function hide() 
//SmileAdver_Class.prototype.hide=function() 
//this.hide=function() 
SmileAdver_Class.prototype.hide=function()//注意:此处关闭对联广告用,但没生效,不道是啥原因,请大家帮忙解决下。---2008-04-25 colinmok

求救 

alert('隐藏函'); 
document.getElementById('smilediv1').style.visibility='hidden';
document.getElementById('smilediv2').style.visibility="hidden";


///////////////////////////////////////////类结束//////////////////////////////////////////////////////////////// 

  
/////////类的使用示例代码(测试用)//////////////////////////////////////////////// 
var SmileAdver = new SmileAdver_Class(); 
SmileAdver.setLeftPos(5); 
SmileAdver.setRightPos(5); 
SmileAdver.setLeftTop(400); 
SmileAdver.setRightTop(400); 
SmileAdver.addLeftImage("http://www.baidu.com","flash.swf","","测试","100","200"); 
SmileAdver.addRightImage("http://www.baidu.com","logo.gif","","测试","100","200"); 
SmileAdver.scroll(); 
--> 
</Script>

热点排行