Saya menulisnya dalam fail js yang berasingan dan menggunakan window.onload=function(){} untuk mengelakkan masalah pemuatan
1 Sisipkan kod terus dari badan dan ia berfungsi
2 tidak boleh digunakan; padam window.onload=function(){} dalam fail, dan ia boleh digunakan
3, dan ia tidak boleh digunakan sama ada ia dimasukkan terus ke dalam kod atau fail ;
4 Konsol tidak melaporkan ralat dan boleh dinyahpepijat Cari fail js ini dalam penyemak imbas.
Saya rasa terdapat masalah dengan memuatkan halaman. Saya tidak dapat mengetahui secara khusus masalahnya. . .
Siarkan kod
图片库
我的图片库
百度一下你就知道 封面:
Kod js adalah seperti ini
window.onload=function(){ function showPic(whichpic){ var source=whichpic.getAttribute('href'); var place_holder=document.getElementById('placeholder'); place_holder.src=source; var p=document.getElementById("alt"); var text=whichpic.getAttribute('title'); p.firstChild.nodeValue=text; } var lis=document.getElementsByTagName('a'); for(i=0;i
Pertama sekali, saya ingin membuat cadangan: sebaiknya jangan masukkan aksara Cina dalam penamaan fail, dan secara amnya jangan bermula dengan nombor Terdapat banyak piawaian penamaan yang boleh anda cari sendiri.
Mengenai masalah:
Tiada ralat dilaporkan dalam konsol dan fail js boleh ditemui dalam penyahpepijat: Selagi anda menggunakan
window.onload=function(){} code>, kod js Ia pasti dilaksanakan Tidak kira sama ada anda meletakkannya di kepala atau badan, atau sama ada anda memperkenalkannya dalam bentuk fail, kod di dalamnya akan dilaksanakan.
控制台没报错且能在调试器中找到这个js文件
:只要你使用了window.onload=function(){}
,js代码是肯定执行的,不论你是放在head里面还是body里面,也不论你是不是以文件的形式引入的,里面的代码都会执行。从body里插入js文件,不能用;文件中删掉window.onload=function(){},能用
:html中的onclick="showPic(this)"
,这个showPic函数是定义在全局作用域下面的,不能用window.onload包裹,当你包裹的时候,showPic的作用域就处于onload这个函数里面了,在全局作用域下找不到showPic,所以点击时,showPic函数里面的代码没有执行
,其他的js代码是执行的,你看看a标签里面已经添加上了onclick等代码。写在head里,无论直接插入代码还是文件,都不能用
Masukkan fail js daripada badan, tetapi ia tidak boleh digunakan padam window.onload=function(){} dalam fail, tetapi ia boleh digunakan
:onclick="showPic(; this)", fungsi showPic ini ditakrifkan di bawah skop global dan tidak boleh dibalut dengan window.onload. Apabila anda membalutnya, skop showPic berada di dalam fungsi onload. ShowPic tidak boleh ditemui dalam global skop. , jadi apabila diklik, kod dalam fungsi showPic
ditulis di kepala dan tidak boleh digunakan sama ada dimasukkan terus ke dalam kod atau fail
: Apabila ia datang kepada pertanyaan dom, pokok dom belum dibina pada masa ini, jadi teg tidak boleh. dipersoalkan. Kod js pertanyaan DOM yang ditulis di kepala mesti dibalut dengan window.onload, tetapi anda mesti mengekstrak fungsi showPic dan meletakkannya dalam skop global supaya ia boleh berjalan seperti biasa. @张东东 Jawapannya betul, tetapi dia menggunakan kaedah acara mengikat elemen.onclick (kod yang anda ulas pada masa ini, fungsi showPic boleh didapati dalam rantai skop, jadi ia boleh dilaksanakan). @stephenhuang Bolehkah kod showPic yang ditulis dalam onload dijalankan?tidak dilaksanakan
, tetapi kod js lain dilaksanakan Anda boleh melihat bahawa onclick dan kod lain telah ditambahkan pada teg a.skrip hendaklah diletakkan di bawah badan
Perkara pertama yang anda perlu tahu ialah:
Fail HTML dilaksanakan secara atas ke bawah, tetapi susunan css dan javascript yang diperkenalkan adalah berbeza Apabila css diperkenalkan dan dimuatkan, program masih dijalankan ke bawah, dan apabila skrip benang terganggu, menunggu Program akan terus dilaksanakan hanya selepas pelaksanaan skrip selesai.
Jadi, kebanyakan perbincangan dalam talian adalah meletakkan skrip skrip selepas
, supaya penjanaan DOM tidak akan ditangguhkan dan disekat kerana pelaksanaan skrip skrip yang lama, mempercepatkan kelajuan memuatkan halaman .Tetapi anda tidak boleh meletakkan semua skrip selepas badan, kerana pelaksanaan beberapa kesan halaman memerlukan pemuatan secara dinamik beberapa skrip js terlebih dahulu. Jadi skrip ini hendaklah diletakkan sebelum
.Jadi, saya rasa prinsip peletakan skrip ialah "js untuk kelas pelaksanaan kesan halaman hendaklah diletakkan sebelum badan dan tindakan, interaksi dan js dipacu peristiwa boleh diletakkan selepas badan."
Kerana ia diletakkan di kepala dan js dimuat turun apabila teg js ditemui Penyajian dom belum selesai lagi dan js tidak boleh mendapatkan elemen dom pada masa ini.
Pertama sekali, skrip boleh diletakkan di kepala, dan banyak laman web menggunakannya dengan cara ini, sebagai contoh, apabila halaman dibuka, adalah perlu untuk menentukan sama ada ia adalah telefon bimbit atau kaedah PC JS, dll.
Kedua, sebagai jawapan kepada soalan anda, saya membuat sedikit pengubahsuaian dan ujian boleh dijalankan. Hanya bahagian js sahaja yang telah ditukar, bahagian html tidak diubah.
window.onload=function(){
}
Jadi mungkin kod js ditulis dengan salah.
Terima kasih banyak, kini saya akhirnya faham apa yang berlaku! Cadangan itu sangat berguna dan saya menerimanya.
Saya secara tidak sengaja menulisnya di kawasan jawapan, tetapi sejak saya menulisnya, mari tulis sesuatu yang berguna dan tambahkan beberapa baris kod
Let lis[i].setAttribute('onclick','showPic(this);return false;' ); Menulis seperti ini juga akan berfungsi: