TypeError getElementsByTagName不是函数问题

我无法找到这个问题的根源。 基本上我在控制台中收到的错误消息是:

TypeError: $(...).getElementsByTagName is not a function 

当我点击它出现在它上面的行时,它在这里:

 var inputs = $('directoryresults').getElementsByTagName('input'); 

我不确定为什么会这样,因为我在页面的标题中包含了jQuery

   

有没有人有任何想法可能导致这个?

有没有人有任何想法可能导致这个?

jQuery构造函数返回的对象没有.getElementsByTagName()方法。


$('selector')返回一个jQuery对象。 .getElementsByTagName()是DOM元素的本机JavaScript方法。

使用您当前拥有的jQuery对象查找具有特定标记名的元素:

 var inputs = $('directoryresults input'); // OR var inputs = $('directoryresults').find('input'); 

要获得.getElementsByTagName()将返回的类似节点列表(注意这不完全相同,这将返回一个数组,其中.getElementsByTagName()将返回一个HTMLCollection ):

 var inputs = $('directoryresults input').get(); 

注意:我假设, directoryresults是DOM元素的类或id。 无论哪种方式,您都需要修改上面的选择器

getElementsByTagName是您将在Element和Document对象上找到的方法。

$('directoryresults')将返回一个jQuery对象(包含任何元素……如果您正在处理HTML文档,则没有任何内容)。

要使用getElementsByTagName ,您需要从jQuery对象中提取元素:

 $('directoryresults')[0].getElementsByTagName 

上面只会从jQuery对象中获取第一个元素(并且它假定至少有一个元素)所以你应该用for循环替换硬编码的[0]

也就是说,您通常应该使用find方法:

 $('directoryresults').find('input') 

……或者首先使用后代组合器:

 $('directoryresults input') 

如前所述, directoryresults将无法在有效的HTML文档中找到任何内容。 你可能想要用它作为前缀.#取决于您实际想要匹配的内容。

您正在使用与jQuery API sintax混合的DOM API:

它是document.getElementsByTagName('input');

如果directoryresults是类或ID,则第一个错误不是特定的

您也不知道目标物品或您想要呼叫的物品


如果您使用TagName的jQuery,请输入:

 var inputs = $('input'); 

如果你想把值放在div中

 $.each(inputs, function(){ $('div').append( $(this).val() ); });