Javascript:按假属性排序元素

时间:2012-03-17 12:49:56

标签: javascript properties area

我正在尝试创建一个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。

2 个答案:

答案 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时,谁知道会发生什么?但这是一个开始。