Javascript返回的对象属性未定义

时间:2015-07-05 12:07:38

标签: javascript jquery html

这些是我使用的一些相关HTML元素:

                <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等,都被分配了一个值),但是当我尝试使用任何返回对象的attributs,它们都是未定义的。

任何人都知道为什么会发生这种情况?

1 个答案:

答案 0 :(得分:0)

你的函数返回jQuery对象

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

因此您可以使用attr()

访问属性
inputSibling.attr('id')

或者如果你想继续使用JS访问风格,你需要

inputSibling.get(0).id