两种简单实现菜单高亮显示的JS类

| 收藏本文 下载本文 作者:胖福

小编在这里给大家带来两种简单实现菜单高亮显示的JS类(共含5篇),希望大家喜欢!同时,但愿您也能像本文投稿人“胖福”一样,积极向本站投稿分享好文章。

两种简单实现菜单高亮显示的JS类

篇1:两种简单实现菜单高亮显示的JS类

近期在写一个博客管理后台的前端,涉及在同一页面两种高亮显示当前菜单的需求.记得当年写静态页时,为了实现高亮都是在每个页面加不同的样式,呵.高亮显示我觉得对于web前端来说,是比较常用到的效果,正好此次又要用到,特地整理出我所写的两种高亮类.

其实思路很简单,第一种方法是通过遍历链接组的href值,通过indexOf判断href值是否被包含在浏览器当前url值中.此方法有一定局限,比如对于iframe内的菜单是不能这样判断的; 第二种方法适用范围更广一样,实现思路也比较简单,即通过判断点击,给点击项加载高亮样式.

第一种判断当前URL值高亮类代码:

//@Mr.Think---判断URL实现菜单高亮显示

function highURL(menuId,classCur){

if(!document.getElementById) return false;

if(!document.getElementById(menuId)) return false;

if(!document.getElementsByTagName) return false;

var menuId=document.getElementById(menuId);

var links=menuId.getElementsByTagName(“a”);

for(var i=0; i

    var menuLink=links[i].href;

var currentLink=window.location.href;

if(currentLink.indexOf(menuLink)!=-1){

links[i].className=classCur;

}

}

}

篇2:奇或偶数行高亮显示及鼠标划过高亮显示类

奇或偶数行高亮显示及鼠标莫过高亮显示,一个经常用到的效果,也能谷歌到大把的这种效果JS,但好像还没有一个封装成类直接用的.想象自己当初谷歌这个类时,还真没少折腾时间.

花了点时间,封装成了一个类(附带一个添加样式的类),适合初学者,直接调用函数即可,无需改代码.

核心JavaScript代码:

//@Mr.Think---添加样式的类

function addClass(elem,value){

if(!elem.className){

elem.className=value;

}else{

var newClass=elem.className;

newClass+=“ ”;

newClass+=value;

elem.className=newClass;

}

}

//@Mr.Think---奇或偶数行高亮显示及鼠标划过高亮显示

function highLight(elemid,tagName,tagNameHighClass,crossTagNameClass){

if(!document.getElementsByTagName) return false;

if(!document.getElementById) return false;

if(!document.getElementById(elemid)) return false;

var elemid=document.getElementById(elemid);

tagNames=elemid.getElementsByTagName(tagName);

//奇数行高亮显示

var odd=true;//它的值决定是奇数高亮显示还是偶数高亮显示

for(var i=0; i

if(odd==true){

addClass(tagNames[i],tagNameHighClass)

odd=false;

}else{

odd=true;

}

}

//鼠标划过高亮显示

for(var m=0; m

tagNames[m].oldClassName=tagNames[m].className;

tagNames[m].onmouseover=function{

addClass(this,crossTagNameClass);

}

tagNames[m].onmouseout=function(){

this.className=this.oldClassName;

}

}

}

篇3:Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示

功能需求:

分省市统计并展示全国雨量站的数目与位置,

常规做法:

分省市雨量站的数目通过统计表的形式在页面端展示,位置根据XY坐标信息将雨量站标绘在图上。

优化做法:

去掉统计图的展示方式,直接将各省市雨量站的数量信息与位置信息展示在图上,如下图所示:

雨量站的分省市统计与展示

处理思路:

首先,提取各省/市的中心点或者省会城市X与Y坐标信息,在本实例中使用的是省会城市的XY坐标信息,用来显示各省市雨量站的分布。

接着,分省/市统计各省市雨量站的个数,并将其根据个数分颜色、大小将其展示在图上。

最后,点击单个圆圈在地图上标绘详细的雨量站的位置信息,并将其缩放至该省/市。

解决问题:

统计信息的清晰展示与数据的请求速度。

比较:

优化做法直接将统计信息与位置信息展示在地图上,在视觉效果上,提高了地图的交互性与美观程度,简单明了;在数据请求上,优化做法只需统计个数,不需要详细的信息,更不需要将所有的站点在地图上展示,每点击一次,再去请求数据,大大提高了程序的效率与速度。

实现代码:

1、数据

首先,在数据库中查询分省市雨量站的统计情况,返回JSON格式的到前台,数据格式如下:

[ {id:1,name:1,x:1,y:1,count:10}, {id:2,name:2,x:2,y:2,count:20}, {id:3,name:3,x:3,y:3,count:30}, {……} {id:n,name:n,x:n,y:n,count:n}]接着,点击每一个点的时候去请求该省/市的详细雨量站的信息,返回的依然是JSOn格式的,格式如上。

2、扩展GraphicLayer

为了操作方便,将GraphicLayer进行了扩展,扩展的时候主要有以下几个主要点:a、将统计数按照XY坐标展示在图上;b、点击单个点的时候标绘详细的雨量站的位置分布信息。

源代码如下:

define([ dojo/_base/declare, dojo/_base/array, esri/Color, dojo/_base/connect, esri/SpatialReference, esri/geometry/Point, esri/graphic, esri/symbols/SimpleMarkerSymbol, esri/symbols/TextSymbol, esri/dijit/PopupTemplate, esri/layers/GraphicsLayer], function ( declare, arrayUtils, Color, connect, SpatialReference, Point, Graphic, SimpleMarkerSymbol, TextSymbol, PopupTemplate, GraphicsLayer ) { return declare([GraphicsLayer], { constructor: function(options) {// 参数:// data: Object[]// Array of objects. Required. Object are required to have properties named x, y and attributes. The x and y coordinates have to be numbers that represent a points coordinates.// field: string?// The field of cluster.// showSingles: Boolean?// Optional. Whether or graphics should be displayed when a cluster graphic is clicked. Default is true.// labelColor: String?// Optional. Hex string or array of rgba values used as the color for cluster labels. Default value is #fff (white).// labelOffset: String?// Optional. Number of pixels to shift a cluster label vertically. Defaults to -5 to align labels with circle symbols. Does not work in IE.// singleSymbol: MarkerSymbol?// Marker Symbol (picture or simple). Optional. Symbol to use for graphics that represent single points. Default is a small gray SimpleMarkerSymbol.// spatialReference: SpatialReference?// Optional. Spatial reference for all graphics in the layer. This has to match the spatial reference of the map. Default is 102100. Omit this if the map uses basemaps in web mercator.// singleTemplate: PopupTemplate?// PopupTemplate. Optional. Popup template used to format attributes for graphics that represent single points. Default shows all attributes as attribute = value (not recommended).//聚类数据this._clusterData = options.data || [];this._clusters = [];//标注颜色,默认为白色this._clusterLabelColor = options.labelColor || #000;//标注偏移,默认为-5this._clusterLabelOffset = (options.hasOwnProperty(labelOffset)) ? options.labelOffset : -5;this._showSingles = options.hasOwnProperty(showSingles) ? options.showSingles : true;//单个对象this._singles = []; //点击时出现// 单个的样式var SMS = SimpleMarkerSymbol;this._singleSym = options.singleSymbol || new SMS(circle, 6, null, new Color(options.singleColor,0.6));//空间参考this._sr = options.spatialReference || new SpatialReference({ wkid: 4326 });this._singleTemplate = options.singleTemplate || new PopupTemplate({ title: , description: {*} }); }, // 重构esri/layers/GraphicsLayer方法 _setMap: function(map, surface) {this._clusterGraphics();// GraphicsLayer will add its own listener herevar div = this.inherited(arguments);return div; }, _unsetMap: function() {this.inherited(arguments); }, clearSingles: function(singles) {// Summary: Remove graphics that represent individual data points.var s = singles || this._singles;console.log(s);arrayUtils.forEach(s, function(g) { console.log(g); this.remove(g);}, this);this._singles.length = 0; }, onClick: function(e) {// stop the click from bubbling to the mape.stopPropagation();this.clearSingles(this._singles);var g = e.graphic;console.log(g);var sonData = city;for(var i= 0, sl=sonData.length;i1){ // show number of points in the cluster var font = new esri.symbol.Font() .setSize(10pt) .setWeight(esri.symbol.Font.WEIGHT_BOLD); var label = new TextSymbol(p.pcitycount) .setColor(new Color(this._clusterLabelColor)) .setOffset(0, this._clusterLabelOffset) .setFont(font); this.add( new Graphic(pt,label,p ) );} } });});

3、在程序中导入包,并引用

var dojoConfig = {paths: { extras: location.pathname.replace(//[^/]+$/, ) + /extras} };

引用的方式为:

require([......,extras/ZonalClusterLayer,dojo/domReady! ], function(......,ZonalClusterLayer ){

4、新建ZonalClusterLayer,分类进行渲染,并将之添加到地图上,

clusterLayer = new ZonalClusterLayer({ data: capital, id: clusters, labelColor: #fff, labelOffset: -4, singleColor: #0ff }); var defaultSym = new SimpleMarkerSymbol().setSize(4); var renderer = new ClassBreaksRenderer(defaultSym, pcitycount); /*var picBaseUrl = images/; var blue = new PictureMarkerSymbol(picBaseUrl + BluePin1LargeB.png, 32, 32).setOffset(0, 15); var green = new PictureMarkerSymbol(picBaseUrl + GreenPin1LargeB.png, 64, 64).setOffset(0, 15); var red = new PictureMarkerSymbol(picBaseUrl + RedPin1LargeB.png, 80, 80).setOffset(0, 15);*/ var style1 = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 10,new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255,200,0]), 1),new Color([255,200,0,0.8])); var style2 = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 16,new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255,125,3]), 1),new Color([255,125,3,0.8])); var style3 = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 18,new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255,23,58]), 1),new Color([255,23,58,0.8])); var style4 = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 20,new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([204,0,184]), 1),new Color([204,0,184,0.8])); var style5 = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 22,new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([0,0,255]), 1),new Color([0,0,255,0.8])); renderer.addBreak(0, 2, style1); renderer.addBreak(2, 5, style2); renderer.addBreak(5, 10, style3); renderer.addBreak(10, 15, style4); renderer.addBreak(15, 20, style5); clusterLayer.setRenderer(renderer); map.addLayer(clusterLayer);5、一些无关紧要的东西

在地图上点击,清楚详细结果:

// close the info window when the map is clicked map.on(click, cleanUp); // close the info window when esc is pressed map.on(key-down, function(e) { if (e.keyCode === 27) {cleanUp(); } });

function cleanUp() { map.infoWindow.hide(); clusterLayer.clearSingles();}

篇4:快速实现MFC类浏览器&VC5的MFC中添加弹出式菜单.net

使用过 VB 的人一定会对它的对象浏览器有深刻的印象,在VB的对象浏览器中可以方便的查看每个对象的属性、方法和事件,学习起VB对象来非常方便, VC在 Windows 编程中功能强大,但VC中没有象VB那样的对象浏览器,要了解MFC中各个类的成员时,往往要另外去查一

使用过VB的人一定会对它的对象浏览器有深刻的印象,在VB的对象浏览器中可以方便的查看每个对象的属性、方法和事件,学习起VB对象来非常方便。VC在Windows编程中功能强大,但VC中没有象VB那样的对象浏览器,要了解MFC中各个类的成员时,往往要另外去查一些资料,查看MFC的源文件也很不方便。

我在使用VC的过程中,发现一个快速实现类浏览的方法,使用它不仅可以浏览MFC中的各个类而且可以查看类的各种成员及其源文件。同时,实现起来又非常简单,各位VC的爱好者不妨一试。

首先,在VC中新建一个空的“Win32 Application”工程,然后,把MFC的源文件都加入到工程中,即可在VC中实现以上功能。

具体操作过程如下:

运行VC, 选择“File”菜单中的“New”;

在出现的对话框中选择“Win32 Application”,填上其它信息后,按“OK”;

在出现的对话框中选择“An empty project”,按“Finish”;

在VC的“Project”菜单中选择“Add To Project”子菜单中的“Files”;

在出的文件对话框中,找到以下路径:

“VC安装目录MFCinclude” ,把其中所有扩展名为“.h”、“.inl”的文件选中(将文件按类型排序时,选择起来比较容易), 按“Ok”;同上,再把 “VC安装目录MFCsrc” 中的所有扩展名 为“.cpp”的文件加入到工程中。(如没有这个目录,请在安装VC时,选择安装源文件)

这时在VC的“Workspace”窗口中,所有的MFC类都会显示出来,你可以尽情

地浏览了!Have fun!!

VC++5的MFC中为程序添加弹出式菜单

姜边・CPCW

弹出式菜单(PopMenu)大家都熟悉,在WIN98的桌面上单击鼠标右键弹出的菜单就是弹出式菜单。通常情况下,弹出式菜单在鼠标右键单击时弹出,当然,也可以根据需要随时弹出。 在VC++5的MFC中,管理菜单的类叫CMenu。下面我向大家介绍建立一个弹出式菜单的基本方法。

一、在资源编辑器中建立一个菜单资源

新建一个菜单资源,比如把菜单的ID号为IDC_POPMENU。此菜单有一项两层,即有一个可弹出的菜单项,而此菜单项的弹出内容即为将要建立的弹出式菜单的内容。如右图,“可弹出项”下的菜单即为将要建立的弹出式菜单的内容。实际上,“可弹出项”这个名称在以后的操作中不会被用到,但VC++5不允许直接建立弹出式菜单,所以采用先建立“可弹出项”的方法。

至于每一个菜单项的消息映射,与一般的菜单相同。

二、使用CMenu类对象

CMenu类的成员函数较多,但建立弹出式菜单只需用到其中几个成员函数。

1、LoadMenu函数

原型:BOOL LoadMenu( UINT nIDResource );

其中nIDResource是菜单资源的ID号,这里用的是刚建立的IDC_POPMENU。

2、GetSubMenu函数

原型:CMenu* GetSubMenu( int nPos ) const;

此函数用于得到子菜单的指针。nPos为层数,0为第一层子菜单……以此类推。

由于我们需要的是“可弹出项”的第一层子菜单,因此用GetSubMenu(0)来得到第一层子菜单的类指针,

3、TrackPopupMenu函数

原型:BOOL TrackPopupMenu( UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect = NULL );

其中:

nFlags为屏幕坐标属性和鼠标坐标属性

屏幕坐标属性:

TPM_CENTERALIGN 横向将菜单以x居中

TPM_LEFTALIGN 横向将菜单以x左对齐

TPM_RIGHTALIGN 横向将菜单以x右对齐

鼠标按键属性(只在响应WM_CONTEXTMENU消息时有效):

TPM_LEFTBUTTON 连续按? 右键不会连续弹出菜单,鼠标右键不可用于选定菜单项

TPM_RIGHTBUTTON 连续按鼠标右键会连续弹出菜单,鼠标右键可用于选定菜单项

x,y均为屏幕坐标

lpRect 菜单所占的区域。如果为NULL,当用户在菜单以外的区域按鼠标键时,菜单会消失

三、实例

1、当鼠标右键单击程序窗口的客户区时,程序会收到一条WM_CONTEXTMENU消息,此时是弹出菜单的最好时机

用ClassWizard中的“Add Windows Message Handler”功能添加对WM_CONTEXT消息的响应函数,函数中代码如下:

void CMyDlg::OnContextMenu(CWnd* pWnd, CPoint point)

{

CMenu menu; //定义CMenu类对象

menu.LoadMenu(IDC_POPMENU); //装入刚建立的菜单IDC_POPMENU menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,pWnd);

/*GetSubMenu(0)得到IDC_POPMENU的第一层子菜单,TrackPopupMenu将菜单弹出到(x,y)处。由于设置为TPM_LEFTALIGN,所以菜单以(x,y)为左上角。*/

}

2、在其他时候弹出菜单也可以,比如,可以响应WM_LBUTTONDOWN消息。这样,在鼠标左键单击时也能弹出菜单

用ClassWizard中的“Add Windows Message Handler”功能添加对WM_LBUTTONDOWN消息的响应函数,函数中代码如下:

void CMfc5Dlg::OnLButtonDown(UINT nFlags, CPoint point)

{

CMenu menu; //定义CMenu类对象 menu.LoadMenu(IDC_POPMENU); //装入刚建立的菜单IDC_POPMENU ClientToScreen(&point); menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);

/*GetSubMenu(0)得到IDC_POPMENU的第一层子菜单,TrackPopupMenu将菜单弹出到(x,y)处。由于设置为TPM_LEFTALIGN,所以菜单以(x,y)为左上角。*/

ScreenToClient(&point);

CDialog::OnLButtonDown(nFlags, point);

}

注意:在WM_LBUTTONDOWN消息中得到的point对象所存的坐标是相对于窗口客户区的,而TrackPopupMenu中的x,y需要是相对于屏幕的,所以需用ClientToScreen函数进行转换,但此消息响应函数要调用CDialog::OnLButtonDown(nFlags, point),故应该用ScreenToClient函数将point所存的坐标还原为相对于窗口客户区的。

原文转自:www.ltesting.net

篇5:Visio 教程 在菜单命令或按钮上显示图标、文字或同时以两种方式显示

应用于: Access, FrontPage, InfoPath, Outlook, Publisher, PowerPoint, OneNote, word, Excel

可使用鼠标重新排列和修改工具栏按钮、菜单和菜单命令,也可通过键盘菜单访问并使用“重排命令”对话框,这些任务都可以标识为(键盘获取)。

请执行下列一项或多项操作:

在菜单命令上显示图标和文字,或者只显示文字

在“工具”菜单上,单击“自定义”。

如果希望更改的菜单 (菜单:单击菜单栏或其他工具栏上的菜单名时出现的命令的列表。)命令位于工具栏上,请确保要更改的工具栏是可见的。

操作方法

在“自定义”对话框中,单击“工具栏”选项卡。

选中要显示的工具栏的复选框。

在“自定义”对话框中,单击“命令”选项卡。

在“自定义”对话框打开的状态下,单击包含要更改命令的菜单。

单击要更改的命令。

在“自定义”对话框中,单击“更改所选内容”,再单击快捷菜单上所需的选项。

注释

一些命令没有与其相关的图标,因此只能以文字显示。

除非将命令更改为工具栏按钮,否则菜单命令不能只显示为图标。如果在快捷菜单上选择了“默认样式”选项,再将命令复制或移动到工具栏,则该命令将显示为工具栏上的图标。

在菜单命令上显示图标和文字,或者只显示文字(可通过键盘操作)

在“工具”菜单上,单击“自定义”。

如果希望更改的菜单 (菜单:单击菜单栏或其他工具栏上的菜单名时出现的命令的列表。)命令位于工具栏上,请确保要更改的工具栏是可见的。

操作方法

在“自定义”对话框中,单击“工具栏”选项卡。

选中要显示的工具栏的复选框。

在“自定义”对话框中,单击“命令”选项卡。

单击“重排命令”。

如果希望更改的菜单位于菜单栏上,请单击“菜单栏”,再单击“菜单栏”列表中所需的菜单,

如果希望更改的菜单位于工具栏上,请单击“工具栏”,再单击“工具栏”列表中所需的菜单。例如,单击“绘图|自选图形”可更改“绘图”工具栏上“自选图形”菜单中的命令。

在“控件”列表中,单击要更改的菜单命令。

单击“更改所选内容”,再单击快捷菜单上所需的选项。

注释

一些命令没有与其相关的图标并且只能以文字显示。

除非将命令更改为工具栏按钮,否则菜单命令不能只显示为图标。如果在快捷菜单上选择了“默认样式”选项,然后将命令复制或移动到工具栏,则该命令将显示为工具栏上的图标。

在工具栏按钮上显示文字、图标或两项都显示

在“工具”菜单上,单击“自定义”。

确保要更改的工具栏是可见的。

操作方法

在“自定义”对话框中,单击“工具栏”选项卡。

选中要显示的工具栏的复选框。

在“自定义”对话框中,单击“命令”选项卡。

在“自定义”对话框打开的状态下,单击要更改的按钮。

在“自定义”对话框中,单击“更改所选内容”,再单击快捷菜单上所需的选项。

您不能更改单击时显示列表或菜单的按钮上的文字或图标。

在工具栏按钮上显示文字、图标或同时显示文字和图标(可通过键盘操作)

在“工具”菜单上,单击“自定义”。

确保要更改的工具栏是可见的。

操作方法

在“自定义”对话框中,单击“工具栏”选项卡。

选中要显示的工具栏的复选框。

在“自定义”对话框中,单击“命令”选项卡。

单击“重排命令”。

单击“工具栏”,再单击“工具栏”列表中所需的工具栏。

在“控件”列表中,单击要更改的按钮。

单击“更改所选内容”,再单击快捷菜单上所需的选项。

注释您不能更改单击时显示列表或菜单的按钮上的文字或图标。

简单内存池实现

实现千万级数据的分页显示数据库教程

JDNS 一个简单的DNS实现

python实现简单的计时器功能函数

中小企业实现网络营销的几种简单手法

个人年度总结简单服务类老员工

两种简单实现菜单高亮显示的JS类(合集5篇)

欢迎下载DOC格式的两种简单实现菜单高亮显示的JS类,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式

相关文章

热门推荐

HOT

猜你喜欢

NEW
点击下载本文文档