js怎么获取数组中元素的位置
发布时间:2025-05-20 14:09:51 发布人:远客网络
一、js怎么获取数组中元素的位置
在JavaScript中,获取数组中元素的位置是一个常见的需求。例如,我们有这样一个数组:
var a= new Array({key:'1',value:"a"},{key:'2',value:"b"},{key:'3',value:"c"},{key:'4',value:"d"});
我们可以通过自定义一个函数来实现这一功能。这个函数可以用来初始化数组,并提供一些方法来操作数组中的元素。例如,我们可以定义一个名为Map的函数,它包含以下几个方法:
3. getByValue:根据值获取元素。
下面是一个简单的Map函数实现示例:
this.put= function(key, value){
this.elements.push({key: key, value: value});
this.getByValue= function(_value){
for(i= 0; i< this.elements.length; i++){
if(this.elements[i].value== _value){
this.getByKey= function(_key){
for(i= 0; i< this.elements.length; i++){
if(this.elements[i].key== _key){
return this.elements[i].value;
在这个例子中,我们创建了一个名为map的新Map实例,并使用init方法初始化了数组a。然后,我们使用getByValue方法根据值"b"来获取对应的键。
这样的实现方式可以方便地在数组中查找元素的位置,而无需遍历整个数组。这对于优化性能和提高代码可读性非常有帮助。
二、js设置光标位置(js获取光标所在元素)
把div设置成相对定位或绝对定位,总之是让其拥有left,top值,当鼠标移进div的时候获取鼠标的坐标,用鼠标的left减去div的left值就是鼠标在div里面的left值,即鼠标在div中的x坐标,同理,用鼠标的top值减去div的top值就是鼠标在div里面的top值,即鼠标在div中的y坐标这样我们就获取了鼠标在div中的位置了
js中指的下标指的是数组下标,也就是数组元素的索引,第几个数组元素
出于安全性考虑和浏览器限制,js不能够设置鼠标的位置,如果提供此项功能,那岂不是在网页上就能控制用户的鼠标移动,这是不能被允许的。只能够获取鼠标的位置,而不能设置鼠标的位置。
鼠标点击事件其实用onclick事件就可以捕获了。
在文件夹中创建一个test的html文件,一个作为指针的ico图片cur,...
在test创建一个div,id为a,并赋予宽高与背景色。
在浏览器打开鼠标就是默认的样式。
现在我们在div的后面添加script脚本,让鼠标移动到div上变为手形状。
可以用JS中对List、Map的遍历的方法
$.each(list2,function(index,items){
$.each(map_demo,function(key,value){
console.info(key:+ key+, Value:+ value);
var new_list=$.map(list2,function(items,index){
$.map(map_demo,function(key,value){
小结:$.map()写法和$.each()类似,但对list的遍历时,参数顺序和$.each()是相反的,并且可以带返回值。对map的遍历和$.each()一样
2.for...in...遍历List/map//遍历map
console.info(key+:+map_demo[key]);
console.info(index+:+list2[index]);
小结:对于List来说,能不用for...in就不要用,效率低下。
3.forEach遍历Listlist2.forEach(function(element, index, array){
console.info(element);//当前元素的值
console.info(index);//当前下标
console.info(array);//数组本身
1、打开Eclipse软件:打开后在工具栏依次点击【File】【New】【Dynamic Web Project】,这个就代表新建的项目是WEB项目。
2、如果找不到【Dynamic Web Project】这个选项,说明以前没有建立过WEB项目,所以不在快捷导航里,这时点击【Other】这个选项。
3、这个界面弹出的是查询窗口,查询的内容是所有可以建立的项目类型,比如JAVA项目、WEB项目等,都可以在这个窗口查询得到。
4、在查询输入框里输入【WEB】,下面会列出所有WEB相关的项目,鼠标选中【Dynamic Web Project】,然后点击【Next】按钮。
5、这个是填写项目的基本信息,包括项目名、项目运行时服务器版本,你可以选择tomcat或者其他都可以,看你的项目需要,在这里输入一个【Test】来测试项目的建立,输入完毕后点击【Next】。
6、这个窗口显示的WEB项目中需要编译的JAVA文件的目录,默认是SRC目录,这个不需要改,直接点击【Next】。
7、接着弹出窗口,显示的是WEB项目,WEB文件相关的目录,就是html或者jsp还有js那些web相关的文件存放的目录,默认是【WebContent】,你也可以修改成你想要的文件名,注意,下面有个复选框,表示的是是否要自动生成web.xml文件web.xml:这个文件是WEB项目的核心文件,也是WEB项目的入口,老版本的Eclipse都会有这个文件,但是新版本的Eclipse因为可以使用在JAVA代码中注解的方式,所以提供让用户选择是否要生成,如果是新手最好选择生成然后点击【Finish】。
8、下面就是我们新建的WEB项目的目录结果
现在,你可以开始你的JAVA开发之旅了。
focus用于input和textarea,当光标在输入框内时为获取焦点,反之为失去焦点;一般当输入框内需要提示文字时使用blur()和focus()比较多失去焦点:获取焦点:
在地图右上角,坐标238.429,击杀元素怪,就可以获得地牢魔晶碎片
(1)document.getElementById(elementId):该方法通过节点的ID,可以准确获得需要的元素,是比较简单快捷的方法。如果页面上含有多个相同id的节点,那么只返回第一个节点。
如今,已经出现了如prototype、Mootools等多个JavaScript库,它们提供了更简便的方法:(id),参数仍然是节点的id。这个方法可以看作是document.getElementById()的另外一种写法,不过
()的功能更为强大,具体用法可以参考它们各自的API文档。
(2)document.getElementsByName(elementName):该方法是通过节点的name获取节点,从名字可以看出,这个方法返回的不是一个节点元素,而是具有同样名称的节点数组。然后,我们可以通过要获取节点的某个属性来循环判断是否为需要的节点。
例如:在HTML中checkbox和radio都是通过相同的name属性值,来标识一个组内的元素。如果我们现在要获取被选中的元素,首先获取改组元素,然后循环判断是节点的checked属性值是否为true即可。
(3)document.getElementsByTagName(tagName):该方法是通过节点的Tag获取节点,同样该方法也是返回一个数组,例如:document.getElementsByTagName(‘A’)将会返回页面上所有超链接节点。在获取节点之前,一般都是知道节点的类型的,所以使用该方法比较简单。但是缺点也是显而易见,那就是返回的数组可能十分庞大,这样就会浪费很多时间。那么,这个方法是不是就没有用处了呢?当然不是,这个方法和上面的两个不同,它不是document节点的专有方法,还可以应用其他的节点,下面将会提到。
(1)parentObj.firstChild:如果节点为已知节点(parentObj)的第一个子节点就可以使用这个方法。这个属性是可以递归使用的,也就是支持parentObj.firstChild.firstChild.firstChild…的形式,如此就可以获得更深层次的节点。
(2)parentObj.lastChild:很显然,这个属性是获取已知节点(parentObj)的最后一个子节点。与firstChild一样,它也可以递归使用。
在使用中,如果我们把二者结合起来,那么将会达到更加令人兴奋的效果,即:parentObj.firstChild.lastChild.lastChild…
(3)parentObj.childNodes:获取已知节点的子节点数组,然后可以通过循环或者索引找到需要的节点。
注意:经测试发现,在IE7上获取的是直接子节点的数组,而在Firefox2.0.0.11上获取的是所有子节点即包括子节点的子节点。
(4)parentObj.children:获取已知节点的直接子节点数组。
注意:经测试,在IE7上,和childNodes效果一样,而Firefox2.0.0.11不支持。这也是为什么我要使用和其他方法不同样式的原因。因此不建议使用。
(5)parentObj.getElementsByTagName(tagName):使用方法不再赘述,它返回已知节点的所有子节点中类型为指定值的子节点数组。例如:parentObj.getElementsByTagName(‘A’)返回已知的子节点中的所有超链接。
(1)neighbourNode.previousSibling:获取已知节点(neighbourNode)的前一个节点,这个属性和前面的firstChild、lastChild一样都似乎可以递归使用的。
(2)neighbourNode.nextSibling:获取已知节点(neighbourNode)的下一个节点,同样支持递归。
(1)childNode.parentNode:获取已知节点的父节点。
上面提到的方法,只是一些基本的方法,如果使用了Prototype等JavaScript库,可能还获得其他不同的方法,例如通过节点的class获取等等。不过,如果能够灵活运用上面的各种方法,相信应该可以应付大部分的程序。
三、js获取元素到文档区域document的坐标方法
1、获取页面中元素到文档区域document的横向纵向坐标的两种方法及其比较
2、在js控制元素运动的过程中对于页面元素坐标位置的获取是经常用到的这里主要总结下两种方法
3、一通过叠加元素对象和它的offsetParent(如果存在)的offsetLeft/offsetTop属性来实现
4、在阅读javascript高级程序设计第三版DOM部分时了解到要获取某个元素在页面上的偏移量需要将这个元素的offsetLeft和offsetTop与其offsetParent的相同属性相加一直循环直至根元素所以要得到元素到文档区域的坐标位置只需通过while循环不断获取offsetParent的offsetLeft/offsetTop直到offsetParent= null为止
5、 function getPosition(element){
6、 var actualLeft= element offsetLeft
7、 current= element offsetParent;//取得元素的offsetParent
8、 actualLeft+= current offsetLeft;
9、 actualTop+= current offsetTop;
10、 current= current offsetParent;
11、 firebug下测试结果截图(注其他浏览器已通过测试!)
12、二通过 getBoundingClientRect()方法实现
13、 getBoundingClientRect方法用于获得页面中某个元素的左上右和下分别相对浏览器视窗window的位置返回的是一个对象该对象有四个属性 top left right bottom;该方法原本是IE Only的但是FF+和Opera+已经支持了该方法可以说在获得页面元素位置上效率有很大的提高另外该方法避免使用while循环而是直接获取数值来实现比第一种方法性能要好特别是在复杂的页面上更为明显
14、 function getPosition(element){
15、 rec= element getBoundingClientRect()
16、 _x= rec left//获取元素相对浏览器视窗window的左上坐标
17、//与或body元素的滚动距离相加就是元素相对于文档区域document的坐标位置
18、 _x+= dc documentElement scrollLeft|| dc body scrollLeft;
19、 _y+= dc documentElement scrollTop|| dc body scrollTop;
20、经测试该方法与第一种方法获取元素相对于document的坐标大小相同对于IE低版本浏览器存在一些差异
21、注意记得要累加上(IE除外)或body(针对IE)元素的水平或垂直滚动距离!