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() ); });