2012-03-17 11 views
0

一定の時間が経過した後、新しいタブの要素からリンクを開くJavascriptスクリプトを作成しようとしています。私はそれを開くことに関連するすべてを持っているが、私は正しく私の要素リストをソートするように見えることはできません。次のようにJavascript:偽のプロパティで要素を並べ替える

私のコードは次のとおりです。

function clickElement() { 
    var e=document.getElementsByTagName("area"); 

    for (var i=0;i < e.length; i++) { 
     var link=e[i].href; 
     window.open(link); 
    } 
} 

次のようにWebページ上のコードは次のとおりです。

<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" /> 

あなたが見ることができるように、私はすべてのエリアのリストを作ることによってオフに始めていますページ上の要素。私は今これらのエリア要素をソートして、 "fake"プロパティを持つ最初の要素(いくつかの要素でhref = ""とshape = ""の間に見られる "=")がオープンされるようにします。ページの読み込みごとに偽のプロパティが変わるので、hrefプロパティの見つかった方法と同様の方法でチェックする以外に、コードに第1、第2、第3、または第4のいずれかがあるかどうかを知る方法はありません。

これを行う方法を知っている人はいますか?プロパティ名はなく、単に値( "=")なので、 "e [i]。="とは言えません。 私はJavascriptにしかアクセスできず、HTMLを編集できません。

+0

"="は無効です。通常の属性または "SELECT ME"というクラスを追加する必要があります。 – epascarello

答えて

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); 
    } 
} 
0

ですあなたのHTMLはです。 <area>要素の1つを持つページを作成し、Firefoxで開き、JavaScriptを使用して属性名と値を取得しました。彼らは:

name   value 
--------  ------------------- 
href   someFourthWebsite 
"    shape= 
rect" 
coords  10, 10, 20, 20 

shape="rect"属性はありません。むしろshape"属性の一部となり、rect"は別の属性になりました。 (基本的に、Firefoxは属性名に"を許可していますが、その場合はデリミタとして特別な意味を与えません)。

だから私は別のブラウザでこれを扱うかもしれません。この目的のためにだけでなく、あなたのHTMLが一般的に役に立たないものと思われます。

var totalHTML = 
    document.getElementsByTagName('area')[0].parentNode.innerHTML.toLowerCase(); 
var weirdAttrIndex = totalHTML.indexOf('"="'); 
var i = -1; 
var areaIndex = 0; 
while(true) 
{ areaIndex = totalHTML.indexOf('<area', areaIndex); 
    if(areaIndex < 0 || areaIndex > weirdAttrIndex) 
    break; 
    ++i; 
} 
window.open(document.getElementsByTagName('area')[i].href); 

私は、これは非常に信頼性があることを期待していない、ので:

しかし、あなたが行うことができます一つのことは、要素のparentNodeinnerHTMLを検討し、第1 "="がどこにあるか見つけることですであるが無効であるHTMLの存在下で、何が起こる可能性があるかを知っていますか?しかしそれはスタートです。

関連する問題