2013-03-06 113 views
0

我有一个参数的函数,它是一个ID字符串:的getElementsByTagName返回undefined

function experimentOne(masterContainer) { 

我与拨打:

experimentOne('#experimentOne'); 

我试图获取给定的DIV内的每个格并将其放置到一个数组,其作品,如果我用:

var menuButtons = $('#myDivIDHere').getElementsByTagName('div'); 

不过,如果我使用:

var menuButtons = masterContainer.getElementsByTagName('div'); 

我在控制台中出现此错误。

TypeError: 'undefined' is not a function (evaluating 'parentContainer.getElementsByTagName('div', masterContainer)')

如果我输出$(masterContainer);到控制台它返回正确的元素,并且这个代码是完美的:

var experimentOneMenuButton = $(masterContainer).children().last(); 

所以我难住,任何想法?

谢谢。

+0

什么是'masterContainer'? – 2013-03-06 12:58:09

+1

尝试'$(masterContainer).find('div');' – Dygestor 2013-03-06 12:59:38

回答

3

你需要使用jQuery element selector

var menuButtons = $('#myDivIDHere').find('div'); 

var menuButtons = $(masterContainer).find('div'); 

experimentOne()方法

getElementsByTagName是一个DOM方法,但$('#myDivIDHere')是一个jQuery对象,你没有getElementsByTagName

如果要使用getElementsByTagName,则需要使用$(masterContainer)[0].getElementsByTagName,其中$(masterContainer)[0]为您提供了dom参考。

+0

很可爱,谢谢。感谢所有的回应。 – mrEmpty 2013-03-06 13:55:58

1

我不认为.getElementsByTagName是jQuery对象上的方法。

您需要使用

var menuButtons = $('#myDivIDHere').get(0).getElementsByTagName('div'); 

的获得(0)将返回DOM对象,而不是jQuery对象

+0

对不起,get()会返回一个DOM对象数组,我相信它就是您要查找的数组。 – 2013-03-06 13:01:44