cari
Rumahhujung hadapan webSoal Jawab bahagian hadapanBagaimana untuk melaksanakan pengubahsuaian klik dua kali dalam javascript

JavaScript ialah bahasa pengaturcaraan yang digunakan secara meluas dalam pembangunan bahagian hadapan, dan pembangun boleh menggunakannya untuk melaksanakan pelbagai fungsi imaginasi. Satu ciri berguna ialah membenarkan pengguna mengubah suai kandungan elemen pada halaman apabila mereka mengklik dua kali padanya. Ciri ini digunakan dalam banyak aplikasi, seperti penyunting teks atau pengurus tugas. Dalam artikel ini, kita akan belajar cara melaksanakan fungsi ini menggunakan JavaScript.

Tambah acara klik dua kali

Pertama, sebelum kita mengubah suai kandungan elemen, kita perlu menambah acara klik dua kali padanya. Kita boleh melakukannya dengan cara berikut:

element.addEventListener('dblclick', function() {
  // 在这里编写事件处理逻辑
});

Dalam kod di atas, kami telah menggunakan kaedah addEventListener untuk menambah acara klik dua kali, dan fungsi yang dikaitkan dengannya akan dilaksanakan apabila pengguna mengklik dua kali pada elemen. Memandangkan elemen kami mempunyai acara klik dua kali, langkah seterusnya ialah mengubah suai kandungannya dalam acara klik dua kali.

Ubah suai kandungan elemen

Selepas kami menentukan elemen untuk menambah acara, langkah seterusnya ialah mengubah suai kandungan elemen dalam acara klik dua kali. Kita boleh menggunakan atribut innerHTML untuk mendapatkan dan menetapkan kandungan elemen.

element.addEventListener('dblclick', function() {
  var currentContent = element.innerHTML;
  element.innerHTML = '替换内容';
});

Dalam kod di atas, kita mula-mula mendapatkan kandungan semasa elemen menggunakan atribut innerHTML dan menyimpannya dalam pembolehubah currentContent. Kami kemudian menetapkan kandungan elemen terus kepada rentetan baharu, dengan itu menukar teks paparannya.

Laksanakan pengubahsuaian klik dua kali

Kini, kami telah melaksanakan acara klik dua kali asas dan kod untuk mengubah suai kandungan elemen. Walau bagaimanapun, terdapat beberapa isu dengan pelaksanaan ini yang perlu ditangani dengan lebih lanjut. Sebagai contoh, kita perlu memastikan bahawa hanya satu elemen boleh diedit pada satu-satu masa dan elemen itu tidak boleh diklik dua kali untuk memilih atau menyeret. Untuk menyelesaikan masalah ini, kita perlu melanjutkan kod:

var currentEditable = null;

function makeEditable(element) {
  element.setAttribute('contenteditable', 'true');
  element.focus();
  currentEditable = element;
}

function makeNonEditable() {
  if (currentEditable) {
    currentEditable.setAttribute('contenteditable', 'false');
    currentEditable = null;
  }
}

document.addEventListener('click', function(event) {
  if (!event.target.isContentEditable) {
    makeNonEditable();
  }
});

document.addEventListener('keydown', function(event) {
  if (event.keyCode === 13) {
    makeNonEditable();
  }
});

element.addEventListener('dblclick', function(event) {
  event.preventDefault();
  makeNonEditable();

  if (event.target.isContentEditable) {
    return;
  }

  makeEditable(event.target);
});

Pelaksanaan ini termasuk langkah berikut:

  1. Kami mentakrifkan pembolehubah global currentEditable untuk menjejaki elemen sedang dalam keadaan penyuntingan Jika tiada unsur dalam keadaan penyuntingan, pembolehubah ini ialah null.
  2. Kami mentakrifkan dua fungsi pembantu makeEditable dan makeNonEditable, yang digunakan untuk menukar elemen kepada keadaan boleh diedit. Apabila halaman tidak boleh diedit, mengklik mana-mana pada halaman akan berhenti mengedit.
  3. Kami menambah dua pendengar acara:

    • click Pendengar digunakan untuk mengesan peristiwa klik tetikus. Jika elemen sasaran acara klik tidak boleh diedit, kami mengalihkan semua elemen daripada keadaan pengeditan kepada keadaan bukan pengeditan.
    • keydown Pendengar digunakan untuk mengesan peristiwa penting. Jika pengguna menekan kekunci Enter, semua elemen beralih daripada menyunting kepada keadaan tidak menyunting.
  4. Kami menambah dblclick pendengar, yang digunakan untuk mengesan acara klik dua kali pengguna. Jika pengguna mengklik dua kali elemen yang tidak boleh diedit, elemen tersebut akan ditukar kepada keadaan boleh diedit.

Kini, kita boleh menggunakan kod di atas untuk melaksanakan pengeditan klik dua kali pada teks.

Ringkasan

Dalam artikel ini, kami menggunakan JavaScript untuk menulis kod yang mengklik dua kali untuk mengubah suai kandungan elemen. Kami menggunakan kaedah addEventListener untuk menambah acara klik dua kali pada elemen dan dalam acara itu gunakan atribut innerHTML untuk mengubah suai kandungan elemen. Akhir sekali, kami juga menambah pemprosesan lain, seperti mengawal hanya satu elemen untuk diedit. Pelaksanaan ini membantu meningkatkan kebolehgunaan dan pengalaman pengguna aplikasi anda, dan kami berharap ia dapat membantu kerja pembangunan anda.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengubahsuaian klik dua kali dalam javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Sifat mesra seo React: Meningkatkan penglihatan enjin carianSifat mesra seo React: Meningkatkan penglihatan enjin carianApr 26, 2025 am 12:27 AM

Ya, reactapplicationscanbeseo-friendlywithpropstrategies.1) useserver-siderendering (ssr) withtoolslikenext.jstogeneratenerlhtmlforindexing.2) pelaksanaan stationsitationeration (ssg) forcontent-heavysitestopre-renderpageStoStoStoStoStoStoStoStoStoStoStoStoStoStoStoStoStoStoStoStoStoStoStetBuild

Kesesakan prestasi React: Mengenal pasti dan mengoptimumkan komponen perlahanKesesakan prestasi React: Mengenal pasti dan mengoptimumkan komponen perlahanApr 26, 2025 am 12:25 AM

Kesesakan prestasi bertindak balas terutamanya disebabkan oleh rendering yang tidak cekap, pengubahsuaian semula dan pengiraan komponen berat dalaman komponen. 1) Gunakan ReactDevTools untuk mencari komponen perlahan dan gunakan pengoptimuman reaksi. 2) Mengoptimumkan useeffect untuk memastikan bahawa ia hanya berjalan apabila perlu. 3) Gunakan usememo dan usecallback untuk pemprosesan memori. 4) Pecahkan komponen besar ke dalam komponen kecil. 5) Untuk senarai data besar, gunakan teknologi menatal maya untuk mengoptimumkan rendering. Melalui kaedah ini, prestasi aplikasi React dapat ditingkatkan dengan ketara.

Alternatif untuk bertindak balas: Meneroka perpustakaan dan kerangka UI JavaScript lainAlternatif untuk bertindak balas: Meneroka perpustakaan dan kerangka UI JavaScript lainApr 26, 2025 am 12:24 AM

Seseorang mungkin mencari alternatif untuk bertindak balas kerana masalah prestasi, lengkung pembelajaran, atau meneroka kaedah pembangunan UI yang berbeza. 1) Vue.js dipuji kerana kemudahan integrasi dan lengkung pembelajaran ringan, sesuai untuk aplikasi kecil dan besar. 2) Angular dibangunkan oleh Google dan sesuai untuk aplikasi besar, dengan sistem jenis yang kuat dan suntikan ketergantungan. 3) Svelte menyediakan prestasi dan kesederhanaan yang sangat baik dengan menyusunnya ke dalam JavaScript yang cekap pada masa membina, tetapi ekosistemnya masih berkembang. Apabila memilih alternatif, mereka harus ditentukan berdasarkan keperluan projek, pengalaman pasukan dan saiz projek.

Algoritma Rekonsiliasi Kekunci dan React: Meningkatkan PrestasiAlgoritma Rekonsiliasi Kekunci dan React: Meningkatkan PrestasiApr 26, 2025 am 12:21 AM

KekunciSinreacTarespecialTributSassignedtoElementSinarrayStableIdentity, crucialforthereconcililiatiationalgorithmwhichupdatesthedomefficiently.1)

Kod boilerplate yang diperlukan untuk projek reaksi: Mengurangkan overhead persediaanKod boilerplate yang diperlukan untuk projek reaksi: Mengurangkan overhead persediaanApr 26, 2025 am 12:19 AM

ToreduceSetupoverheadinreactprojects, usetoolslikecreatereactapp (CRA), next.js, gatsby, orstarterkits, andmaintainamodularstructur E.1) crasimplifiessetupwithasinglecommand.2) next.jsandgatsbyofforefeaturesbutalearningcurve.3) starterkitsprovideecomprehensi

Memahami UseState (): Panduan Komprehensif untuk Menegaskan Pengurusan NegeriMemahami UseState (): Panduan Komprehensif untuk Menegaskan Pengurusan NegeriApr 25, 2025 am 12:21 AM

useState () isareacthookusedtomanagestateinfunctionalcomponents.1) itinitializesandupdatesstate, 2) harusbecalledatthetoplevelofcomponents, 3) canleadto'stalestate'ifnotusedCorrecly, dan4)

Apakah kelebihan menggunakan React?Apakah kelebihan menggunakan React?Apr 25, 2025 am 12:16 AM

Reactispopularduetoitscomponent-berasaskan-berasaskan, virtualdom, richecosystem, anddeclarativenature.1) komponen-berasaskan komponen yang tidak dapat dipisahkan.

Debugging dalam React: Mengenal pasti dan menyelesaikan masalah biasaDebugging dalam React: Mengenal pasti dan menyelesaikan masalah biasaApr 25, 2025 am 12:09 AM

TODEBUGREACTAPPLICATIONSEFECTIVELY, USETHESESTRATION

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

PhpStorm versi Mac

PhpStorm versi Mac

Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).