This question already has answers here:
What do querySelectorAll and getElementsBy* methods return?
(9个答案)
5年前关闭。
我仍然使用getElementsByID,这全是上帝。但是现在我想用ByClassName做到这一点,但是它不起作用。
我想要这个页面的温度:http://www.weatherman.com/us/ny/new-york.html
该类的名称是:temp tempF
但是此代码不起作用:
deg是我的WebView显示页面。
(如果您没有任何格式参数,则无需使用
PS:只是为了清楚了解词汇表,请注意,该元素在HTML中写为
提示:要调试javascript,请在Mac上的Chrome或Safari等浏览器中打开页面,显示页面检查器,然后转到“控制台”标签,以便您可以在此处键入javascript代码并用不同的表达式进行测试。在您的情况下,您会发现函数键入错误,名称中缺少“ s”,并且更正后,您会看到
(9个答案)
5年前关闭。
我仍然使用getElementsByID,这全是上帝。但是现在我想用ByClassName做到这一点,但是它不起作用。
我想要这个页面的温度:http://www.weatherman.com/us/ny/new-york.html
该类的名称是:temp tempF
但是此代码不起作用:
tempString = [deg stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementByClassName('temp tempF').innerText;"]];
deg是我的WebView显示页面。
最佳答案
javascript函数的名称为getElementsByClassName
和s(因为在HTML中,与id
在给定文档中是唯一的不同,类名称可以归因于同一页面的多个元素)。
如果查看页面的源代码,您实际上可以看到有多个标记为temp
和tempF
类的元素。您需要根据要提取的选项选择正确的选项(第一个?第二个?)。
例如:
tempString = [deg stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('temp tempF')[0].innerText;"];
(如果您没有任何格式参数,则无需使用
stringWithFormat
,这只是个过大的选择,只需直接使用字符串文字即可)PS:只是为了清楚了解词汇表,请注意,该元素在HTML中写为
<div class="temp tempF">
的事实意味着这是一个div
元素,它应用了两个CSS不同的类,即temp
和tempF
。因此,此元素不是“具有类名称temp tempF
的元素”,而是“应用于两个具有类名称temp
和tempF
的元素”。提示:要调试javascript,请在Mac上的Chrome或Safari等浏览器中打开页面,显示页面检查器,然后转到“控制台”标签,以便您可以在此处键入javascript代码并用不同的表达式进行测试。在您的情况下,您会发现函数键入错误,名称中缺少“ s”,并且更正后,您会看到
getElementsByClassName
的结果返回多个元素,而不仅仅是一个。07-24 21:21