document.getElementById('myID')和jQuery元素的JSDoc类型是什么?

时间:2013-09-13 10:54:05

标签: javascript jsdoc

我正在尝试使用JSDoc语法记录我的函数。

/**
 * 
 * My Description
 * 
 * @param {JQuery|???} input
 * @returns {JQuery}
 */
function foo(input){
    return $('selector');
}

上面的函数接受一个参数,该参数可以是JQuery对象,也可以是document.getElementById返回的元素。

getElementById的返回值的有效JSDoc类型是什么?

例如,以下内容均有效:

foo($('#input'));
foo(document.getElementById('input'));

另外,我将来在哪里可以找到这个?

5 个答案:

答案 0 :(得分:16)

getElementById将始终返回Element的子类型。对于HTML文档,HTMLElement将更合适

document.getElementById('some-anchor').constructor //HTMLAnchorElement
document.getElementById('some-div').constructor //HTMLDivElement

在所有情况下,document.getElementById('some-element') instanceof HTMLElement,恕我直言,将返回真实

答案 1 :(得分:5)

虽然技术上getElementById的返回值为object,但文档应该有助于开发人员知道它是什么。

我个人跟Element一起去,但没有迹象表明你应该使用什么。

答案 2 :(得分:3)

在您的方案中Element似乎是最合适的,但一般来说,您希望像您的代码所允许的那样准确。

例如,使用最新的高级IDE,使用Element无法为disabledreadOnly等属性提供自动完成功能。我觉得使用HTMLInputElement @type代替它很有用。

答案 3 :(得分:1)

HTMLElementany可用于您的示例。

/**
 * @param {JQuery|HTMLElement} input
 * @returns {JQuery}
 */
function foo(input){
    return $('selector');
}

答案 4 :(得分:0)

getElementById()也会返回一个javascript对象。

在jQuery中 - > $('#input')只是将带有id输入的元素包装到jQuery对象中,以便可以在其上应用jQuery方法。

因此,在这两种情况下,类型都是一个对象。

var x = document.getElementById('input');

alert(typeof x);// object