js型別的乙個奇異問題

2021-05-21 14:35:40 字數 1037 閱讀 9447

最近無意中遇到乙個奇異的問題,不知道大家以前有沒有這樣的用法

首先,定義乙個陣列:

var arr_ids= new array();

現在要得到一系列textarea控制項,注意是控制項本身而不是控制項中的文字內容,我用了這樣的語句:

arr_ids= $(".normal .li1 textarea");

我在這裡是引用的jquery的$方法來得到的,這時候arr_ids應該已經是乙個textarea的列表了。

得到arr_ids 之後仍然沒有問題,arr_ids[0]依然得到正確的資訊,即為一系列textarea的第乙個。

現在alert(arr_ids[0].id)也沒有問題,彈出的是第乙個textarea的id值。

下面問題來了,我在定義arr_ids的時候本來是想存放一系列textarea的id的,即成為乙個textarea的id的陣列。

arr_ids[0] = arr_ids[0].id;

這一句也沒有問題,可以alert(arr_ids[0])得到id的值,

最後出問題了,我需要把一些列id組合起來得到乙個id的字串,

arr_ids.join(",");

這一句報錯了,然而報錯的地方不是這裡,但是我找了半天其他地方沒有錯,應該還是這裡的問題,仔細分析之後發現了可能是型別問題,因為arr_ids在建立之初並沒有型別,然而arr_ids= $(".normal .li1 textarea");這一句是被賦值為jquery的$方法所返回的型別:object型別,所以對乙個object型別陣列進行join是無法操作的,只有在arr_ids建立之初被賦值為字串或者數字型別,或者確定的單一型別才能應用join方法,所以改過之後的**是下面:

var arr_ids= new array();

arr_ids[0]= $(".normal .li1 textarea")[0].id;

這樣arr_ids.join(",")方法就沒有問題了。

所以根據以上研究得出結論:

1.不能對複雜型別進行join操作。

2.jquery的$方法返回的型別都是jquery型別

乙個關於js 優化的問題

在我們遍歷陣列 for 迴圈的時候,通常習慣的寫法是這樣 for var i 0 i myarray.length i 但是在這段 中,有乙個十分明顯的問題,就是每次在迴圈的時候,都會計算一邊 myarray.length 的值,這就意味著每次都要實時查詢dom,而dom的操作又是十分昂貴的。在這個...

關於js的prototype乙個問題

今天寫了乙個例子,先寫了乙個js檔案 hello.js helloworld function helloworld.prototype function saywelcome function 然後在另乙個htm檔案中hello.html 引用這個js檔案 hello world 這樣做,會報乙個...

引用型別(乙個有趣的問題)

public static void main string args test test tests n test.id 10 這裡沒有問題,修改test.id會導致tests i id一起更改 test tests n test null 這裡有問題,修改test null,但是 tests i...