盤點js學習中,遇到的各種疑問

2021-09-29 12:09:20 字數 3743 閱讀 5664

檢視js方法的相容性

**:

一、關於data-***

1)命名不要包含大寫字母

第一種:(可行)

第二種:(不可行),data-***中不要包含大寫字母

2)會變動的data-***,data(name)不能改變頁面上顯示的值,請使用attr('data-***')進行改變。需要注意的是,如果獲取的值是數字,attr('data-***')獲取的值是string型別,data(name)獲取的值是number型別。

改變

二、json.parse()

使用此方法將字串轉為json物件時,必須保證字串嚴格符合json格式('',不能通過a沒有加雙引號)

三、陣列與類陣列

如使用document.getelementsbyclassname獲取的元素陣列,是乙個類陣列。

1)類陣列沒有陣列的方法。

2)不要使用for in去遍歷類陣列,會遍歷出多餘的資料。

四、在for中繫結事件

這樣會導致每個按鈕的輸出值都為3,因為它使用了for中的i,i在迴圈後的值就是3,可以使用閉包解決此問題。

var btn = document.getelementsbyclassname('test')

for(var i = 0; i < 3; i++)

}

五、獲取元素樣式

1)style:讀取的只是元素的內聯樣式,即寫在元素的 style 屬性上的樣式,既支援讀也支援寫。

2)getcomputedstyle和currentstyle:讀取的樣式是最終樣式,包括了內聯樣式嵌入樣式外部樣式,僅支援讀並不支援寫入。

function getstyle(ele, sty)  else 

return style;

}

六、js進行浮點數運算存在精度問題

1)使用math.js外掛程式。    

2)使用以下**解決。參考位址找不到了....

/**

* js浮點數精確計算,正負計算數值小於

* math.abs(math.pow(2, 53))2的53次方,還不是很了解,粗略說明

* accadd(num1, num2)--加

* accsub(num1, num2)--減

* accdiv(num1, num2)--除

* accmul(num1, num2)--乘

*/(function(window)

exactcalc.prototype = ,

accadd: function(num1, num2) catch (e)

try catch (e)

times = math.pow(10, math.max(dec1, dec2));

// var result = (num1 * times + num2 * times) / times;

var result = (this.accmul(num1, times) + this.accmul(num2, times)) / times;

return this.getcorrectresult("add", num1, num2, result);

// return result;

},accsub: function(num1, num2) catch (e)

try catch (e)

times = math.pow(10, math.max(dec1, dec2));

// var result = number(((num1 * times - num2 * times) / times);

var result = number((this.accmul(num1, times) - this.accmul(num2, times)) / times);

return this.getcorrectresult("sub", num1, num2, result);

// return result;

},accdiv: function(num1, num2) catch (e) {}

try catch (e) {}

dec1 = this.converttoint(num1);

dec2 = this.converttoint(num2);

var result = this.accmul((dec1 / dec2), math.pow(10, t2 - t1));

return this.getcorrectresult("div", num1, num2, result);

// return result;

},accmul: function(num1, num2) catch (e) {}

try catch (e) {}

var result = this.converttoint(s1) * this.converttoint(s2) / math.pow(10, times);

return this.getcorrectresult("mul", num1, num2, result);

// return result;

},countdecimals: function(num)

}var x = str.split('e');

if (isdecimal)

len -= parseint(x[1]);

} else if (str.split('.').length === 2)

}} catch (e) finally

return len;}},

converttoint: function(num) else

return newnum;

},getcorrectresult: function(type, num1, num2, result)

if (math.abs(result - temp_result) > 1)

return result;

} },

exactcalc.prototype.init.prototype = exactcalc.prototype;

window.exactcalc = exactcalc;

})(window);

七、關聯陣列

1)關聯陣列的長度為0.

2)關聯陣列的下標如果是數字,那麼他的長度是根據下標取值的。

var a = ;

a['99'] = 123

console.log(a) // [emptyx99, 123], a.length = 100

八、使用formdata上傳檔案

$("#uploadfile").click(function () 

})})本例子中name="excelfile"一定要有,主要是根據後台的需求上傳

盤點html學習中的各種疑問

1 iframe是內聯元素 2 如果沒有display block 它的高度會比父元素多出4px todo 理解為什麼 底下會有間隙,需要用font size 0或者display block轉為塊級元素,消除底部的間隙。區別在於兩種按鈕預設的 white space 值不一樣,前者是 pre,後者...

CSS實戰中的各種疑問

1.一 問題描述 父div中裡面的內容 如div 浮動之後,父div的高度不能自適應了 二 給父div加上overflow hidden 即可解決 三 網上其他解決方法 未測試,但原理差不多 給父div加上 overflow auto zoom 1 overflow auto 是讓高度自適應,zoo...

JS學習中遇到的問題

1.js給input text文字框 第一種賦值不能及時在文字框展示出來,但是f12除錯可以看到,value已經賦值。第二種沒問題。現在不知道什麼原因。這樣不行 var html n n n 正在為您自動跳轉,也可以手動返回 n n 5秒後自動跳轉.n 返回 n n n n n dialog buy...