2012-09-16 33 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]简单但很棒! –