2010-09-06 26 views
3

完全自學而沒有真正閱讀JavaScript(現在是我的工作,不管你信不信)有幾件事我接受,不明白。

第一個是美元符號。

至於我用的理解,這是一個快捷方式document.getElementById(), 但如果我登錄$document.getElementById()安慰 - 只有$返回一個值。但是,該值始終爲function(),應該不是。元素?是什麼賦予了?

我所擁有的第二個問題是不斷出現在我的代碼中,我不得不改變代碼來消除它。這是「...不是功能」錯誤。

例如:

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

會給出錯誤.val() is not a function。爲什麼?我如何使用div_id的值來查看它是否在數組中?

+1

這就是爲什麼jquery是危險:) – annakata 2010-09-06 09:45:37

+0

@annakata,這就是爲什麼任何API是危險的;) – eyelidlessness 2010-09-06 09:57:59

+1

@eyelidlessness這就是爲什麼幾乎宗教傳播的jquery作爲一個javascript事實上的標準是危險的。 – KooiInc 2010-09-06 10:41:50

回答

4

嗨。當你使用Jquery(我假設你是),那麼$將返回jquery對象。這可以包含一系列匹配的HTML元素,具體取決於您使用的選擇器。例如$(「#foo」)將返回包含id爲foo的元素的jquery對象。您可以使用$(「#foo」)[0] - 使用數組樣式表示法獲取實際的HTML DOM元素。

你可以給我們一些關於你想用$ .inArray例子實現的更多信息嗎?

+0

jQuery並沒有將'$'別名爲'document.getElementById',它將'$'別名爲CSS選擇器查詢引擎(過去是內部的,現在使用Sizzle)。使用'$'作爲'document.getElementById'的別名可能暗示提問者正在使用Prototype或者Mootools或者類似的庫(實際上,這些實際上不僅僅是選擇具有該id的元素)。 – eyelidlessness 2010-09-06 09:47:09

+0

@eyelidlessness:實際上,jQuery將'$'別名爲'jQuery',這是一個不僅僅是使用選擇器引擎的功能,這取決於你傳遞給它的內容。 – 2010-09-06 09:51:50

+0

@ T.J。克勞德,這是正確的。我過於簡潔,由於評論字符限制... – eyelidlessness 2010-09-06 09:56:13

0

$和document.getElementById不是一回事。只有當你使用一些像jquery這樣的函數庫來把$賦給函數時,$纔會在控制檯中給你一個函數。

.val id主要用於獲取表單元素的值,這是一個jQuery的函數。我認爲你需要學習更多的JavaScript和jQuery

2

$是一個有效的變量名稱。

所以,如果你嘗試使用$而沒有設置它,它將無法正常工作。

很多人卻/框架使用$作爲一個快捷方式的document.getElementById,他們將在腳本的頂部,聲明它:

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

無論使用Javascript,也不是DOM限定$,其中(正如其他答覆者所說的)通常在通用DOM庫(如jQuery,Prototype或Mootools)中定義。基於你包含的特定代碼,我懷疑你已經編寫了jQuery API編碼(因爲你使用$.inArray,請參閱http://api.jquery.com/jQuery.inArray/;儘管你聲稱$別名混淆了問題,因爲jQuery期望CSS選擇符而不是元素ID)。

$預期未定義時,通常意味着您需要在HTML文檔中包含您正在使用的API庫。