Rumah hujung hadapan web tutorial js Umpan klik pendengar Javascript

Umpan klik pendengar Javascript

Nov 23, 2024 am 09:16 AM

Memiliki kod bertulis dalam fail ujian yang berfungsi dengan baik, saya terpaksa memasukkannya ke dalam kod utama & ia tidak berfungsi dengan baik.

Kod asas terdiri daripada fail html ringkas dengan satu butang yang dipanggil "ingat ini."

Javascript listeners click bait

Itu mempunyai onclick pada fungsi yang dipanggil showRememberMenu(). Fungsi itu mencipta menu yang dipaparkan di bawah butang.

Javascript listeners click bait

Menu lungsur turun mempunyai beberapa teg untuk ditambahkan pada data sebagai peringatan tentang sebab pengguna cuba mengingatinya. (Saya sudah tua, saya perlukan semua bantuan yang saya boleh dapatkan untuk mengingati sesuatu.)

Klik butang, lihat menu lungsur turun, klik teg yang anda mahu & data yang anda lihat disimpan dalam tatasusunan dengan teg itu. Setelah mengklik menu ia hilang.

Tugas saya kemudiannya untuk menggugurkannya ke dalam skrip yang lebih besar & melihatnya berfungsi sama... oh, mungkin tidak. Klik menu, simpan data dengan tag dan... apa? kenapa menu masih ada? Ia telah dipadamkan dalam bentuk asal sebaik sahaja ia diklik. Mengapa ia tidak hilang?

Dan jika saya mengklik teg yang menyatakan 'Keluar jangan simpan' ia masih memaparkan menu.

Sebagai pengguna, saya sedang melihat kad yang mempunyai data daripada pangkalan data. Mengklik butang ini ialah cara untuk menyimpan data tersebut untuk kegunaan kemudian. Di sini anda boleh melihat kad dengan butang baharunya.

Javascript listeners click bait

Klik butang itu untuk melihat lungsur turun dan pilih teg yang berkaitan untuk mengingati data ini...

Javascript listeners click bait

Sekarang lakukan perkara yang sama dengan kad lain dan anda mempunyai semua data yang diperlukan untuk menyelesaikan beberapa tugasan, tetapi mengapakah "&%!!! menu itu tidak akan hilang?

Selepas saya kehabisan idea, saya menghubungi rakan sekerja saya Gemini the AI. Ia memberi saya penyelesaian pertama yang betul-betul kod yang saya sudah ada. Ia mencadangkan banyak perkara, tiada satu pun yang berkesan.

Adalah yakin bahawa menyemak kewujudan nod & elemen akan menjadikan semuanya baik, tetapi tidak.

Ia mengambil masa kira-kira sejam untuk diberitahu perkara yang tidak berkesan dan diberi syarahan tentang isu masa, mungkin memerlukan penangguhan, yang sememangnya tidak berkaitan, tetapi secara perlahan-lahan kami menyelesaikan masalah itu sebagai satu pasukan.

Jika anda ingin mencuba menyelesaikan ini, saya yakin anda boleh melakukannya dalam masa yang lebih singkat.

Berikut ialah kod draf asal yang berfungsi...

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>Some Javascript</title>
  <link rel="stylesheet" href="./someJavascript.css">
  <link rel="icon" href="favicons/favicon.ico" type="image/icon type">
</head>
<body>
  <div>



<p>and the javascript<br>
</p>

<pre class="brush:php;toolbar:false">let logToConsole=true;
var rowData={THId:'2', TaskName:'To climb a tree', TaskDesc:'Try using hands & feet'};
var remember=[];

function rememberProcess(remember){
    if(logToConsole) console.log('RememberProcess()');
for(i=0;i<remember.length;i+=2){
    console.log('Item ',i/2+1,' of ', remember.length/2,' items', 'Remember as ',remember[i], remember[i+1]);}        
}

function putDataIntoRemember(menuHeader,rowData){
    if(logToConsole) console.log('putDataIntoRemember()');
    remember.push(menuHeader);
    remember.push(rowData);
}

function deleteMenu(menuLu){
    if(logToConsole) console.log('deleteMenu()');
    menuLu.parentNode.removeChild(menuLu);
}

function showRememberMenu(){
    if(logToConsole) console.log('showRememberMenu()');

 if(document.querySelector('#rememberMenu') ) return; //menu already exists

    const remember_button = document.querySelector('#remember');
    const menuHeaders=['EXIT no save', 'as Student', 'as Manager', 'as Author', 'as Task' , 'as Note'];
    menuLu=document.createElement('lu');
    menuLu.id='rememberMenu';

for(let i=0;i<menuHeaders.length;i++){
    li=document.createElement('li');         
    li.innerText=menuHeaders[i]; 
    li.id=menuHeaders[i];
    li.classList.add('rememberLi');

    li.addEventListener('click', () => { //console.log('li button clicked', menuHeaders[i], rowData)
        if(menuHeaders[i]=='EXIT no save') {deleteMenu(menuLu);return};
    putDataIntoRemember(menuHeaders[i], rowData);//[header][rowData]       
    rememberProcess(remember);//do something with the stored data structure
    deleteMenu(menuLu);
      })

    menuLu.appendChild(li);
    }

remember_button.appendChild(menuLu);      
}
Salin selepas log masuk
Salin selepas log masuk

Terdapat beberapa css, tetapi ia tidak berkaitan dengan masalah

.remember_button {

        background-color: #5A5050;
        border: 0;
        border-radius: 5px;
        box-shadow: 0 10px 10px rgba(0, 0, 0, 0.2);
        color: #fff;
        font-size: 12px;
        padding: 3px 4px;
        position: relative;        
        letter-spacing: 1px;
        width: 100px;

}

    /*Button goes white on hover*/
.remember_button:hover {
        background-color: #ffffff;
        color: #001F61;
        cursor:pointer;
    }    


.rememberLi{
    background-color: #aa9595;
    border: 0;
    border-radius: 5px;
    box-shadow: 0 10px 10px rgba(0, 0, 0, 0.2);
    color: #fff;
    font-size: 12px;
    padding: 3px 4px;
    position: relative;        
    letter-spacing: 1px;
    width: 100px;

}

.rememberLi:hover {
    background-color: #ffffff;
    color: #001F61;
    cursor:pointer;
}   
Salin selepas log masuk
Salin selepas log masuk

Perkara di atas berfungsi, lebih kurang seperti yang saya mahukan.

Berikut ialah versi dalam sistem yang lebih besar yang saya tidak akan siarkan kesemuanya.

Kad dihasilkan secara dinamik dan mempunyai kod berikut ditambah untuk menghasilkan jenis butang yang sama seperti dalam kad asal

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>Some Javascript</title>
  <link rel="stylesheet" href="./someJavascript.css">
  <link rel="icon" href="favicons/favicon.ico" type="image/icon type">
</head>
<body>
  <div>



<p>and the javascript<br>
</p>

<pre class="brush:php;toolbar:false">let logToConsole=true;
var rowData={THId:'2', TaskName:'To climb a tree', TaskDesc:'Try using hands & feet'};
var remember=[];

function rememberProcess(remember){
    if(logToConsole) console.log('RememberProcess()');
for(i=0;i<remember.length;i+=2){
    console.log('Item ',i/2+1,' of ', remember.length/2,' items', 'Remember as ',remember[i], remember[i+1]);}        
}

function putDataIntoRemember(menuHeader,rowData){
    if(logToConsole) console.log('putDataIntoRemember()');
    remember.push(menuHeader);
    remember.push(rowData);
}

function deleteMenu(menuLu){
    if(logToConsole) console.log('deleteMenu()');
    menuLu.parentNode.removeChild(menuLu);
}

function showRememberMenu(){
    if(logToConsole) console.log('showRememberMenu()');

 if(document.querySelector('#rememberMenu') ) return; //menu already exists

    const remember_button = document.querySelector('#remember');
    const menuHeaders=['EXIT no save', 'as Student', 'as Manager', 'as Author', 'as Task' , 'as Note'];
    menuLu=document.createElement('lu');
    menuLu.id='rememberMenu';

for(let i=0;i<menuHeaders.length;i++){
    li=document.createElement('li');         
    li.innerText=menuHeaders[i]; 
    li.id=menuHeaders[i];
    li.classList.add('rememberLi');

    li.addEventListener('click', () => { //console.log('li button clicked', menuHeaders[i], rowData)
        if(menuHeaders[i]=='EXIT no save') {deleteMenu(menuLu);return};
    putDataIntoRemember(menuHeaders[i], rowData);//[header][rowData]       
    rememberProcess(remember);//do something with the stored data structure
    deleteMenu(menuLu);
      })

    menuLu.appendChild(li);
    }

remember_button.appendChild(menuLu);      
}
Salin selepas log masuk
Salin selepas log masuk

dan javascript yang selebihnya hampir sama dengan yang asal

.remember_button {

        background-color: #5A5050;
        border: 0;
        border-radius: 5px;
        box-shadow: 0 10px 10px rgba(0, 0, 0, 0.2);
        color: #fff;
        font-size: 12px;
        padding: 3px 4px;
        position: relative;        
        letter-spacing: 1px;
        width: 100px;

}

    /*Button goes white on hover*/
.remember_button:hover {
        background-color: #ffffff;
        color: #001F61;
        cursor:pointer;
    }    


.rememberLi{
    background-color: #aa9595;
    border: 0;
    border-radius: 5px;
    box-shadow: 0 10px 10px rgba(0, 0, 0, 0.2);
    color: #fff;
    font-size: 12px;
    padding: 3px 4px;
    position: relative;        
    letter-spacing: 1px;
    width: 100px;

}

.rememberLi:hover {
    background-color: #ffffff;
    color: #001F61;
    cursor:pointer;
}   
Salin selepas log masuk
Salin selepas log masuk

Peringatan tentang rupa sebelum diklik
Javascript listeners click bait

dan cara ia tersekat selepas diklik

Javascript listeners click bait

Saya tidak tahu apa masalahnya, dan Gemini tidak hadir pada salah satu kuliahnya mengenai perkara yang sama sekali tidak berkaitan tetapi Ai & saya akhirnya mengecilkan perkara dan kini nampaknya begitu mudah.

Jadi mengapa menu itu berterusan?

Atas ialah kandungan terperinci Umpan klik pendengar Javascript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

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

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Ganti aksara rentetan dalam javascript

periksa jQuery jika tarikh sah periksa jQuery jika tarikh sah Mar 01, 2025 am 08:51 AM

periksa jQuery jika tarikh sah

jQuery mendapatkan padding/margin elemen jQuery mendapatkan padding/margin elemen Mar 01, 2025 am 08:53 AM

jQuery mendapatkan padding/margin elemen

10 Tab Accordion JQuery 10 Tab Accordion JQuery Mar 01, 2025 am 01:34 AM

10 Tab Accordion JQuery

10 patut diperiksa plugin jQuery 10 patut diperiksa plugin jQuery Mar 01, 2025 am 01:29 AM

10 patut diperiksa plugin jQuery

HTTP Debugging dengan Node dan HTTP-Console HTTP Debugging dengan Node dan HTTP-Console Mar 01, 2025 am 01:37 AM

HTTP Debugging dengan Node dan HTTP-Console

Tutorial Persediaan API Carian Google Custom Tutorial Persediaan API Carian Google Custom Mar 04, 2025 am 01:06 AM

Tutorial Persediaan API Carian Google Custom

jQuery tambah bar scroll ke div jQuery tambah bar scroll ke div Mar 01, 2025 am 01:30 AM

jQuery tambah bar scroll ke div

See all articles