2013-05-14 3 views
1

내 HTML을 찾기입니다 :특정 태그에게

<a id="showSlotsByLocation_" href="#" style="color:blue;" onclick="confirmAppt('28/05/2013','364301');">14.00 - 14.15</a> 
<a id="showSlotsByLocation_" href="#" style="color:blue;" onclick="confirmAppt('28/05/2013','364303');">14.15 - 14.30</a> 

ID 이름은 모든 링크에 동일합니다. 이것이 가장 큰 어려움입니다. 내가 두 번째 클릭 내 자바 스크립트 코드를 링크 할

는 구성 웹 브라우저 내가 조건에 맞게 어떻게해야합니까

if (location.pathname == "/abc") 
{ 
    //alert('location found') this is ok found; 

    var el = document.getElementsByTagName("a"); 
    for (var i=0;i<el.length;i++) 
    { 
     if (el.id == 'showSlotsByLocation_' && el.innerText.isEqual('14.15 - 14.30') && el.outerHTML.contains("confirmAppt('28/05/2013'")) 
     { 
      alert('link found') \\this condition not match; 
      el.onclick(); 
     } 

    } 
} 

입니다입니까?

+1

는'ISEQUAL()'와'포함()'사용자 정의 함수입니다 JS 코드를 업데이트? – adeneo

+0

HTML 페이지에서 동일한 ID를 두 개 이상 갖는 것은 사양을 위반하는 것입니다. 따라서 HTML을 담당하거나 (있는 사람을 알고있는 경우) 변경해야합니다. 둘째, @adeneo가 말하는 것과 함께, 당신은 정말로'el.innerText === '14 .15 - 14.3 '(일관성/좋은 형식을위한 첫 번째 비교에서'==='를 사용하는 것)을 수행해야합니다. –

+0

일관성 또는 좋은 형식은 비교 연산자로 두 개 또는 세 개의 등호를 사용할지 여부와 상관이 없으며 유형 및 값 모두와 일치하는지 여부가 중요하며 유일하게 3 개의 등호를 사용하지 않습니다. 일관성을 유지하기 위해 사방에? – adeneo

답변

3

동일한 ID를 가진 두 개의 요소를 가질 수 없으며 ID는 고유합니다.

당신이 ID를 변경 한 것이다 때, 당신은 단순히 사용하여 액세스 할 수 있습니다 document.getElementById('idOfYourElement')

편집 : 모든 먼저, 루프의 현재 요소를 가져 와서 "현재"변수를 선언 할 필요가, el은 (는) HTMLElements 컬렉션이므로 el.id을 사용할 수 없습니다! 전에는 눈치 채지 못해 죄송합니다. 당신이 그것을 정의 이제

var current = el[i]; 

를 아래의 코드로이 모든 줄을 변경 : 그래서 당신이 (바로 if 문 전에, 루프 내부의 변수 을 정의)가 필요합니다.

if (el.id == 'showSlotsByLocation_' && el.innerText.isEqual('14.15 - 14.30') && el.outerHTML.contains("confirmAppt('28/05/2013'")) 

나는이 당신을 중지 코드라고 생각합니다. JS에는 isEqual 및 이라는 기능이 없습니다.

if (current.id == 'showSlotsByLocation_' && current.textContent === '14.15 - 14.30' && current.outerHTML.indexOf("confirmAppt('28/05/2013'") !== -1) 

마지막 한가지 : innerText와 유효한 크로스 브라우저 속성없는이는 TextContent를 대신 사용합니다. 내가 그런 아무것도 기본적으로 존재하지 않는

MDN Reference

if (location.pathname == "/abc") 
{  
    var el = document.getElementsByTagName("a"); 
    for (var i=0;i<el.length;i++) 
    { 
     var current = el[i]; 
     if (current.id == 'showSlotsByLocation_' && current.textContent === '14.15 - 14.30')//I'm not sure about this one, in case you want it just remove the comment and the last parenthesis && current.outerHTML.indexOf("confirmAppt('28/05/2013'") !== -1) 
     { 
      alert('link found'); 
      current.click(); 
     } 

    } 
} 
+0

ID는 웹 사이트에서 동일합니다. 이것은 주요 어려움. – Braheen

+0

멋지게 관찰되었지만 선택이 tagNames에서 발생하기 때문에 아마 문제가 아니며 제 의견으로는 의견이 있어야했습니다! – adeneo

+1

웹 사이트가 너의 것이 아니니? 그런 다음 변경하는 방법을 찾으면 괜찮을 것입니다. @adeneo 답변을 업데이트하고 있습니다. 맞습니다! –