2012-09-16 3 views
1

나는 여전히 getElementsByID와 함께 작업했으며 그것은 모두 신이었다. 하지만 지금은 ByClassName으로하고 싶지만 작동하지 않습니다.iPhone UIWebView getElementsByClassName

나는이 페이지의 온도를 갖고 싶어 : http://www.weatherman.com/us/ny/new-york.html 클래스 이름은 다음과 같습니다 온도 tempF

하지만이 코드가 작동하지 않습니다 tempString = [deg stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementByClassName('temp tempF').innerText;"]]; ℃, 페이지를 보여주는 내 웹보기입니다.

답변

6

자바 스크립트 함수의 이름은 S (HTML에서, 주어진 문서에 고유 id들과 달리, 클래스 이름은 동일한 페이지의 여러 요소에 기인 할 수 있기 때문에)으로 getElementsByClassName이다.

페이지의 소스 코드를 보면 실제로는 temptempF 태그가 지정된 여러 요소가 있음을 알 수 있습니다. 추출 할 항목에 따라 올바른 것을 선택해야합니다 (처음부터 두 번째?).

tempString = [deg stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('temp tempF')[0].innerText;"]; 

(당신이 어떤 형식 매개 변수가없는 경우 stringWithFormat를 사용할 필요, 그건 그냥 잔인한 없다, 단순히 직접 리터럴 문자열을 사용)


: 예를 들어

추 신 : 어휘에 대해 명확히하기 위해, 요소가 <div class="temp tempF">으로 HTML로 작성되었다는 사실은이 단어가 div이라는 것을 의미합니다. 두 개의 CSS 고유 클래스, 즉 temptempF 따라서이 요소는 "클래스 이름이 temp tempF 인 요소"가 아니라 "두 개의 클래스 이름이 temptempF 인 요소"입니다.

: Mac에서 크롬이나 사파리 같은 브라우저에서 페이지를 열고, 당신의 자바 스크립트 디버깅 페이지 관리자를 표시하고 당신이 바로 여기에 자바 스크립트 코드를 입력 비트를 테스트 할 수 있도록 콘솔 탭으로 이동하십시오 다른 식과. 귀하의 경우 귀하의 기능이 잘못 입력되어 이름에 "s"가 누락 된 것을 보았을 것입니다. 그리고 일단 getElementsByClassName의 결과가 하나가 아닌 복수의 요소를 반환하는 것을 보았을 것입니다.

+0

[0] 간단하지만 멋지다! –