我无法找到此问题的根源。基本上我在控制台中收到的错误信息是:
TypeError: $(...).getElementsByTagName is not a function
当我点击它出现的那一行时,就在这里:
var inputs = $('directoryresults').getElementsByTagName('input');
我不确定为什么会这样,因为我在页面标题中包含了jQuery
:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.0/jquery-ui.min.js"></script>
有没有人有任何想法可能导致这个?
答案 0 :(得分:9)
有没有人有任何想法可能导致这个?
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。无论哪种方式,您都希望修改上面的选择器
答案 1 :(得分:4)
您正在使用混合了jQuery API语法的DOM API:
&#39; document.getElementsByTagName('input');
答案 2 :(得分:3)
getElementsByTagName
是您将在Element和Document对象上找到的方法。
$('directoryresults')
将返回一个jQuery对象(包含任何<directoryresult>
个元素......如果您正在处理HTML文档,那么没有任何内容。)
要使用getElementsByTagName
,您需要从jQuery对象中提取元素:
$('directoryresults')[0].getElementsByTagName
上面只会从jQuery对象中获取第一个元素(并假设至少有一个元素),因此您应该用[0]
循环替换硬编码的for
。
也就是说,您通常应该使用find
方法:
$('directoryresults').find('input')
......或者首先使用后代组合器:
$('directoryresults input')
如前所述,directoryresults
在有效的HTML文档中找不到任何内容。您可能希望使用.
或#
作为前缀,具体取决于您实际要匹配的内容。
答案 3 :(得分:0)
如果directoryresults是类或ID,则第一个错误不具体
您也不知道目标物品或您想要呼叫的物品
如果您使用TagName的jQuery,请输入:
var inputs = $('input');
如果你想把值放在div
中$.each(inputs, function(){
$('div').append( $(this).val() );
});