2015-07-05 224 views
3

這些都是和我一起工作的一些相關的HTML元素:的Javascript返回undefined對象屬性

   <TD id=Cell.0.0> 
        <DIV></DIV> 
        <IMG id=_Q0_C0_mrSingleImg src="radio.gif"> 
        <INPUT type="checkbox" name=_QGender_C class=mrSingle id=_Q0_C0> 
        <LABEL for=_Q0_C0> 
         <SPAN class=mrSingleText > 
         some text 
         </SPAN> 
        </LABEL> 
       </TD> 

我主要的JS文件,我第一次分配此的onClick方法img元素:

function onImageClickSingle(event) { 

    // catch clicked img element 
    event = event || window.event; 
    var img = event.target || event.srcElement; // IE fix 
    if (img.nodeType == 3) img = img.parentNode; // firefix bug fix 

    var inputSibling = getNextSibling(img); 

    // some more code that involves working with inputSibling attributes... 
} 

正如你所看到的,在上面的函數中,我調用「getNextSibling」來獲取圖像兄弟,即輸入元素。
由於代碼必須支持IE瀏覽器的舊版本,我添加了這個「getNextSibling」功能,我fix.js文件,如建議在另一個堆棧溢出線程:調試時

// IE 8 and less do not support nextSibling or previousSibling javascript properties 
function getNextSibling(element) { 
    var sibling = $('#' + element.id + '').next(); 
    return sibling; 
} 

我遇到的問題是,代碼,我可以看到inputSibling變量確實包含了「getNextSibling」返回的所請求的輸入同胞元素(id,checked,class name等,都被分配了一個值),但是當我嘗試使用返回對象的屬性時,他們都沒有定義。

任何人都知道爲什麼會發生這種情況?

+0

您必須顯示值未定義的部分。您所展示的代碼中沒有任何內容可以解釋它。 – JJJ

+0

嗨Juhana,謝謝你的回覆。在getNextSibling函數中,屬性已經是未定義的。 – lionHeart

+0

可能有些東西與動態選擇器搞砸了。由於您已經有了對元素的引用,因此不必再次搜索它。只需使用'$(element).next();'。 –

回答

0

你的函數返回jQuery對象

function getNextSibling(element) { 
    var sibling = $('#' + element.id + '').next(); 
    return sibling; 
} 

所以您將能夠訪問使用ATTR()

inputSibling.attr('id') 

,或者如果你想繼續使用JS訪問風格,你需要

屬性
inputSibling.get(0).id 
+0

非常感謝你volkinc,那正是我不知道的錯誤 – lionHeart

+0

不客氣 – volkinc