14

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

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

上述函数接受单个参数,该参数可以是 JQuery 对象,也可以是document.getElementById.

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

例如,以下都是有效的:

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

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

4

5 回答 5

23

getElementById将始终返回Element的子类型。在 HTML 文档的情况下,HTMLElement会更合适

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

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

于 2013-09-13T11:05:22.207 回答
5

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

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

于 2013-09-13T11:01:53.623 回答
3

在您的场景Element中似乎是最合适的,但一般来说,您希望在代码允许的情况下尽可能准确。

例如,使用最近的高级 IDE, usingElement不会为诸如disabledor之类的属性提供自动完成功能readOnly。我发现使用HTMLInputElement@type 代替它很有用。

于 2015-12-24T03:55:18.113 回答
3

HTMLElement或者any可以在您的示例中使用。

/**
 * @param {JQuery|HTMLElement} input
 * @returns {JQuery}
 */
function foo(input){
    return $('selector');
}
于 2016-10-10T01:38:02.913 回答
0

getElementById()还将返回一个 javascript 对象。

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

所以在这两种情况下,类型都是对象。

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

alert(typeof x);// object
于 2013-09-13T11:00:27.580 回答