我正在尝试创建一个Javascript脚本,在一段时间后,从新标签中的元素打开链接。我已经完成了打开它的所有相关内容,但我似乎无法正确排序我的元素列表。
我的代码如下:
function clickElement() {
var e=document.getElementsByTagName("area");
for (var i=0;i < e.length; i++) {
var link=e[i].href;
window.open(link);
}
}
网页上的代码如下:
<area href="someWebsite" "=" shape="rect" coords="0, 0, 10, 10" />
<area href="someOtherWebsite" "=" shape="rect" coords="0, 10, 10, 20" />
<area href="someThirdWebsite" shape="rect" coords="10, 0, 20, 10" />
<area href="someFourthWebsite" "=" shape="rect" coords="10, 10, 20, 20" />
正如您所看到的,我首先要列出页面上所有区域元素的列表。我现在想要对那些区域元素进行排序,以便第一个具有“假”属性(在某些元素上看到“=”在href =“”和shape =“”之间)是打开的元素。虚假属性在每个页面加载时都会发生变化,因此代码无法知道第一个,第二个,第三个或第四个是否有一个,除了以与我找到href属性的方式类似的方式检查它。
你们中的任何人都知道怎么做吗?由于没有属性名称,只有一个值(“=”),我不能说“e [i]。=”。 请注意,我只能访问Javascript,并且无法编辑HTML。
答案 0 :(得分:0)
这对你向我们展示的html无效......但这里有解决方案
<area href="someWebsite" "=" shape="rect" coords="0, 0, 10, 10" />
<area href="someOtherWebsite" "=" shape="rect" coords="0, 10, 10, 20" />
<area href="someThirdWebsite" shape="rect" coords="10, 0, 20, 10" />
<area href="someFourthWebsite" first="1" shape="rect" coords="10, 10, 20, 20" />
这是javascript
function clickElement() {
var e=document.getElementsByTagName("area");
// First open the one with first attribute
for (var i=0;i < e.length; i++) if( e[i].getAttribute( 'first' )) {
var link=e[i].href;
window.open(link);
}
// Then open others
for (var i=0;i < e.length; i++) if( !e[i].getAttribute( 'first' )) {
var link=e[i].href;
window.open(link);
}
}
答案 1 :(得分:0)
我认为你没有意识到只是你的HTML有多么无效。我创建了一个包含<area>
个元素的页面,在Firefox中打开它,并使用一些JavaScript来获取属性名称和值。他们是:
name value
-------- -------------------
href someFourthWebsite
" shape=
rect"
coords 10, 10, 20, 20
请注意,没有shape="rect"
属性;相反,shape
已成为"
属性的一部分,rect"
已成为单独的属性。 (基本上,Firefox在属性名称中允许"
,在这种情况下不作为分隔符赋予它任何特殊含义。显然,其他浏览器可能会以不同方式处理它:它非常无效,并且所有赌注都已关闭。)
所以我怀疑你的HTML一般没用,不仅仅是为了这个目的。
但是,您可以做的一件事是检查元素“innerHTML
的{{1}},找到第一个parentNode
的位置:
"="
我不希望这是非常可靠的,因为在存在 无效的HTML时,谁知道会发生什么?但这是一个开始。