关于JavaScript基础知识的几个问题 - $,“不是函数”

时间:2010-09-06 09:33:01

标签: javascript jquery

完全自学成才,而不是实际阅读JavaScript(现在是我的工作,信不信由你),有些事我接受但不理解。

第一个是美元符号。

据我所知,它是document.getElementById()的捷径, 但如果我将$document.getElementById()记录到控制台 - 只有$会返回一个值。但是,此值始终为function(),不应该如此。元素?是什么给了什么?

我遇到的第二个问题是我的代码中不断出现的问题,我不遗余力地更改代码以消除它。这是“......不是函数”错误。

例如:

if ($.inArray($(div_id).val(), arr) >= 0);

将给出错误.val() is not a function。为什么?我如何使用div_id的值来查看它是否在数组中?

4 个答案:

答案 0 :(得分:4)

你好。当你使用Jquery(我假设你是)时,$将返回jquery对象。这可以包含一系列匹配的HTML元素,具体取决于您使用的选择器。例如$(“#foo”)将返回包含id为foo的元素的jquery对象。您可以使用$(“#foo”)[0]获取实际的HTML DOM元素 - 使用数组样式表示法。

您可以通过$ .inArray示例向我们提供有关您尝试实现的更多信息吗?

答案 1 :(得分:2)

$是一个有效的变量名。

因此,如果您尝试使用$而不进行设置,则无效。

然而,许多人/框架使用$作为document.getElementById的快捷方式,他们会将其声明为脚本的顶部:

function $(id) { return document.getElementById(id); }

答案 2 :(得分:0)

$和document.getElementById不是同一个东西。 $只有当你使用像jquery这样的函数库来为你提供一个函数才能在函数控制器中运行。

.val id主要用于获取表单元素的值,这是一个jquery函数。我认为您需要了解更多有关javascript和jQuery的信息

答案 3 :(得分:0)

Javascript和DOM都没有定义$,其中(正如其他回答者所说)通常在jQuery,Prototype或Mootools等通用DOM库中定义。根据您包含的特定代码,我怀疑您一直在编写jQuery API代码(因为您使用$.inArray,请参阅http://api.jquery.com/jQuery.inArray/;尽管您声称$别名{{1}混淆很重要,因为jQuery需要CSS选择器而不是元素ID。

当预期document.getElementById但未定义时,通常意味着您需要在HTML文档中包含您正在使用其API的库。