2012-09-16 61 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;"]]; 度是表示該頁面的WebView我。

回答

6

javascript函數的名稱是getElementsByClassName小號(因爲在HTML中,不像id S的在給定文檔中的獨特,類名可以歸因於同一頁的多個元件)。

如果你看看你的頁面的源代碼,你實際上可以看到有多個標籤爲類temptempF的元素。你需要根據你想要提取哪一個來選擇正確的(第一?秒?)。

例如:

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

(無需使用stringWithFormat如果你沒有任何格式參數,這只是矯枉過正,簡單地使用字符串直接字面)


PS:只要清楚詞彙表,請注意元素在HTML中被寫爲<div class="temp tempF">的事實意味着這是一個div元素,它適用於兩個CSS不同的類,即temptempF。所以這個元素不是「類名爲temp tempF的元素」,而是「應用了兩個類名temptempF的元素」。

提示:要調試你的JavaScript,像Mac上的Chrome或Safari瀏覽器中打開頁面,顯示頁面檢查器,然後轉到控制檯選項卡,以便你可以在這裏輸入JavaScript代碼和測試了一下用不同的表情。在你的情況下,你會看到你的函數是錯誤的,錯過了名字中的「s」,一旦糾正,你會看到getElementsByClassName的結果返回多個元素,而不僅僅是一個。

+0

[0]簡單但很棒! –