Javascript 正在尝试从Walmart.com获取ElementById

Javascript 正在尝试从Walmart.com获取ElementById,javascript,Javascript,我对JavaScript非常陌生,我基本上是在尝试构建一个简单的脚本,以便从像沃尔玛这样的网站获取信息。我用firebug来测试我的小片段。我在价格上有点问题 这是我的代码: var price = document.getElementById('clearfix camelPrice'); console.log(price); 我还尝试了“.camelPrice”,但没有使用句点,我一直得到null 提前多谢 看起来您试图为getElementById提供类选择器,而不是ID选择器。这就

我对
JavaScript
非常陌生,我基本上是在尝试构建一个简单的脚本,以便从像沃尔玛这样的网站获取信息。我用firebug来测试我的小片段。我在价格上有点问题

这是我的代码:

var price = document.getElementById('clearfix camelPrice');
console.log(price);
我还尝试了
“.camelPrice”
,但没有使用句点,我一直得到
null


提前多谢

看起来您试图为
getElementById
提供类选择器,而不是ID选择器。这就是ID的外观:

<div id="some-id">...</div>
<div class="some-class">...</div>
。。。
这就是类的外观:

<div id="some-id">...</div>
<div class="some-class">...</div>
。。。

区别在于页面上只有一个元素应该有一个特定的ID,其中许多元素可能具有相同的类。

看起来您试图为
getElementById提供一个类选择器,而不是ID选择器。这就是ID的外观:

<div id="some-id">...</div>
<div class="some-class">...</div>
。。。
这就是类的外观:

<div id="some-id">...</div>
<div class="some-class">...</div>
。。。

区别在于页面上只有一个元素应该有一个特定的ID,其中许多元素可能具有相同的类。

在这种情况下,您使用了错误的方法
getElementById
完全按照它所说的做,它通过id获取元素。在Walmart.com上,“camelPrice”是一个CSS类

我们仍然可以通过类获取元素。您需要的是
document.getElementsByClassName()
。此外,您可以将多个参数传递给
getElementsByClassName
,如下所示:

document.getElementsByClassName('clearfix', 'camelPrice');

这将获取同时设置了
clearfix
camelPrice
类的所有元素。

在这种情况下,您使用了错误的方法
getElementById
完全按照它所说的做,它通过id获取元素。在Walmart.com上,“camelPrice”是一个CSS类

我们仍然可以通过类获取元素。您需要的是
document.getElementsByClassName()
。此外,您可以将多个参数传递给
getElementsByClassName
,如下所示:

document.getElementsByClassName('clearfix', 'camelPrice');

这将获取同时设置了
clearfix
camelPrice
类的所有元素。

除了其他人所说的关于您的选择看起来像
id
s之外,下面是您如何按类名进行选择:

document.getElementsByClassName('classname');
较新的浏览器允许您从本机JavaScript进行类似jQuery的选择:

document.querySelectorAll('#id .classname');

除了其他人所说的您的选择看起来像
id
s之外,以下是您可以通过类名进行选择的方法:

document.getElementsByClassName('classname');
较新的浏览器允许您从本机JavaScript进行类似jQuery的选择:

document.querySelectorAll('#id .classname');

我不确定您是如何在沃尔玛的网站上运行JavaScript的,这不是不可能的,但也许您应该指定它,例如,如果沃尔玛网站位于iframe中,您将无法从您的网站使用getElementById()

另一方面,如果您正在运行某种本地实时编辑器/控制台,那么这可能是可能的

对于上面显示的脚本,ID上有一个错误,因为ID只能是一个单词,并且无法从元素中选择所需的属性类型:

例如,

或者对于其他标记,如


我不确定您是如何在沃尔玛的网站上运行JavaScript的,这不是不可能的,但也许您应该指定它,例如,如果沃尔玛网站位于iframe中,您将无法从您的网站使用getElementById()

另一方面,如果您正在运行某种本地实时编辑器/控制台,那么这可能是可能的

对于上面显示的脚本,ID上有一个错误,因为ID只能是一个单词,并且无法从元素中选择所需的属性类型:

例如,

或者对于其他标记,如



您可能需要粘贴完整的代码。从这个角度看,你似乎是在自己的网站上调用这行代码,并希望通过黑魔法,它能爬过沃尔玛的dom。
“clearfix camelPrice”
看起来像两个类名,而不是一个
id
值。我想他正在浏览器控制台中运行代码,应该可以正常工作。@twaddington-true,如果这是一个ID而不是一个类,那么document.getElementById('camelPrice')就可以工作。然而,他说他正在尝试建立一个简单的脚本。在这种情况下,Console不会有帮助,除非他提前运行自己的测试。无论哪种方式,他都没有在此处详细说明他的操作。请参阅:。您可能希望粘贴完整的代码。从这个角度看,你似乎是在自己的网站上调用这行代码,并希望通过黑魔法,它能爬过沃尔玛的dom。
“clearfix camelPrice”
看起来像两个类名,而不是一个
id
值。我想他正在浏览器控制台中运行代码,应该可以正常工作。@twaddington-true,如果这是一个ID而不是一个类,那么document.getElementById('camelPrice')就可以工作。然而,他说他正在尝试建立一个简单的脚本。在这种情况下,Console不会有帮助,除非他提前运行自己的测试。无论哪种方式,他都没有具体说明他的操作。请参见:。这是事实,但值得注意的是GetElementsByCassName方法相对较新,仅在一些浏览器的最新版本中可用:查看compat表,只有IE存在版本问题。考虑到他使用的是JS控制台,他使用的是Firefox或Chrome(与前几个版本兼容)或IE9,后者也兼容。:)是的,我同意@twaddington;根据,IE<8不支持它。这对一些人来说可能并不重要,但对于那些必须支持IE7的人来说,应该注意到这一点。我还要注意,在Firebug(FF10)中,如果您使用
console.log(document.getElementsByClassName('clearfix','camelPrice')在注释行中,您确实会得到一个结果。它恰好包含127个匹配的元素。OP不一定提到他在哪个页面上使用此代码;我只是科雷克