這個(gè)問題好像有點(diǎn)復(fù)雜誒……
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、盱眙網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為盱眙等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
首先,HTML 表標(biāo)準(zhǔn)中 table 是沒有 innerHTML 屬性的,
不過大多數(shù)瀏覽器都對(duì)table的innerHTML做了支持,比如IE系列都有只讀的table.innerHTML,
但是不能寫。
火狐瀏覽器的table.innerHTML讀寫都沒問題。
所以請(qǐng)先嘗試一下
alert(box.innerHTML='111')
如果彈出了‘111’,說明是支持寫的,若沒有彈出,說明不支持。
body.innerHTML 一樣的,在標(biāo)準(zhǔn)里沒有,但是大多數(shù)瀏覽器都支持讀寫,不知道你用的瀏覽器是否可以支持,
同樣嘗試一下
alert(body.innerHTML='222')
以上是第一步,若確實(shí)存在不支持的情況……我也沒啥辦法。
若都支持,那么我們進(jìn)行第二步
換一種觸發(fā)方式看看。
不用onLoad,用2個(gè)按鈕分別觸發(fā)一下。
一個(gè)box,一個(gè)body
我這沒環(huán)境,沒法試驗(yàn),等你有了結(jié)果再看
javascript是弱類型語(yǔ)言
你定義一個(gè)變量var a = 1;
他會(huì)初始成一個(gè)類型為Number的變量
但是如果你中間操作錯(cuò)誤,比如判斷條件寫成if(a = undefined){}
本意是想讓a為空的時(shí)候報(bào)個(gè)錯(cuò)或者怎么。但是這個(gè)語(yǔ)言可以隨意給變量賦值,付任何類型的值,現(xiàn)在就有坑了
你接下來(lái)在進(jìn)行運(yùn)算,比如a += 1的話,那這個(gè)值是錯(cuò)的,相當(dāng)于undefined + 1等于NaN;
這個(gè)基本就是暗坑了。
如果是TS的話,在定義var a: Number = 1;的情況下,你想給他賦字符串或者別的類型的值,在運(yùn)行發(fā)布之前就會(huì)報(bào)錯(cuò),減少線上的坑。
var weibotextnum=document.getElementsById("weibotextnum");
改為
var weibotextnum=document.getElementById("weibotextnum");
你可以自己去思考一下:為什么這個(gè)不用加s,而另3個(gè)卻要加s呢?另3個(gè)有什么共同特征呢?提示一下:s在英語(yǔ)中代表復(fù)數(shù)
原因比較多,我個(gè)人分析認(rèn)為主要有以下兩大方面的原因
歷史遺留原因
javascript在當(dāng)時(shí)設(shè)計(jì)之初,是帶著商業(yè)競(jìng)爭(zhēng)目的的,js前身為livescript,主要是使得瀏覽器初步具備客戶端能力,因此并不是特別完善。
網(wǎng)頁(yè)端js開發(fā)在相當(dāng)一段時(shí)間內(nèi),由于瀏覽器的js解釋引擎性能并不高,而且網(wǎng)絡(luò)帶寬也比較小,因此絕大多數(shù)站點(diǎn)的代碼規(guī)模并不大,主要針對(duì)頁(yè)面內(nèi)容一些簡(jiǎn)單交互邏輯,在此前提下,瀏覽器廠商以及工業(yè)界都沒有強(qiáng)大的動(dòng)力去實(shí)現(xiàn)面向?qū)ο蟀姹镜膉s。
技術(shù)實(shí)現(xiàn)原因
考慮到到網(wǎng)頁(yè)環(huán)境的特殊性,使用原型繼承而不是類繼承的方式,更節(jié)約內(nèi)存空間,而且解釋器的實(shí)現(xiàn)更為簡(jiǎn)單。
js開源界在不斷的技術(shù)積累中,開發(fā)者已經(jīng)逐漸適應(yīng)了沒有類的js開發(fā)模式,在js中實(shí)現(xiàn)真正的類反而顯得有些雞肋。
最后:雖然現(xiàn)在ES6標(biāo)準(zhǔn)中已經(jīng)有class關(guān)鍵字了,但是歸根到底類還是一個(gè)語(yǔ)法糖,其底層還是基于原型繼承的。
Javascript是一種腳本語(yǔ)言,IE瀏覽器是運(yùn)行這種語(yǔ)言的環(huán)境!哪怕你先在記事本中寫好一段程序,只要把后綴名改為.html就能運(yùn)行程序。所以不會(huì)存在IE瀏覽器中沒有Javascript這種說法。
按你的描述猜想,你一定是瀏覽器不響應(yīng)javascript程序。如果真是這樣,你就在瀏覽器工具欄中點(diǎn)擊“工具”然后進(jìn)入“Intel選項(xiàng)”在“高級(jí)”選擇項(xiàng)卡中,點(diǎn)擊“還原設(shè)置”。
如果還是沒用,那就是看看你的javascript程序是否是創(chuàng)建一個(gè)彈出窗口,如果是,那就在“工具”,“彈出窗口阻止程序”中選擇“關(guān)閉”。
js能劃分作用域的只有function,塊級(jí)作用域指的是定義在條件或循環(huán)分支中的,像你舉的這個(gè)函數(shù)例子,test定義在for循環(huán)之內(nèi),再for循環(huán)之外也能訪問what變量 (這是js的變量提升,可以查一下,它會(huì)把what提升到test函數(shù)的最開頭定義)function test(){
for(var i=0;i3;i++){
var what = "haha";
} console.log(what);
}
test();
如果你這段代碼換成Java的,是下面這樣的:private void test(){
for(int i=0;i3;i++){
String what =“123";
}
System.out.println(what);
?
這個(gè)方法是編譯不通過的,因?yàn)閣hat的作用域只在for循環(huán)之內(nèi),為塊級(jí)作用域。