मैं एक सरल, संक्षिप्त और शुद्ध जावास्क्रिप्ट विधि खोजता हूं। मैं इस तरह की कोशिश करता हूं

 if (button.clicked === false) {
 }

Jsfiddle के साथ एक उत्तर अच्छा है। लेकिन यह जरूरी नहीं है :D

1
Can74 31 मार्च 2018, 01:27

8 जवाब

सबसे बढ़िया उत्तर

वैश्विक चर सेट करने के लिए कहने वाले किसी व्यक्ति की बात न सुनें - आपको इसकी आवश्यकता नहीं है।

प्रत्येक HTML तत्व एक वस्तु है। हम केवल clicked नामक एक अलग संपत्ति को परिभाषित कर सकते हैं।

पहले हम जांचते हैं कि यह अपरिभाषित है या नहीं। यदि यह है तो हम इसे true पर सेट करते हैं, अन्यथा हम इसे बूलियन पर सेट करते हैं, जो भी सेट है उसके विपरीत। इसका मतलब है कि अगर यह true था, तो क्लिक करने पर यह false हो जाता है और इसके विपरीत।

यह गुण तत्व के साथ रहता है। जैसा कि कंसोल लॉग में दिखाया गया है। मैंने यह दिखाने के लिए कि यह क्लिक फ़ंक्शन के बाहर से उपलब्ध है, DOM पर वापस जाने के लिए document.querySelector("button") का उपयोग किया।

document.querySelector("button").addEventListener("click", function() {
  (this.clicked != undefined) ?
  this.clicked = !this.clicked : 
  this.clicked = true;
  
  console.log(document.querySelector("button").clicked);
});
<button>click me</button>
0
zfrisch 30 मार्च 2018, 22:49

जावास्क्रिप्ट में वस्तुओं पर अपरिभाषित गुण झूठे हैं। तो आप बस कुछ ऐसा लिख ​​सकते हैं:

button = {}; //obviously assign to your button.
if (!button.clicked) {
  //do stuff like:
  console.log(!button.clicked);
}

यह सर्वोत्तम अभ्यास नहीं हो सकता है, लेकिन यह छोटा और सुविधाजनक है।

0
Chancelish 30 मार्च 2018, 23:32

नीचे यह वैनिला JavaScript में कैसा दिखता है। आप किसी राज्य की जांच के लिए वैश्विक चर सेट कर सकते हैं।

var btnClicked = false;
document.getElementById("btn").onclick = function() {
  btnClicked = true;
  document.getElementById("text").innerHTML = "Clicked = true";
}
<button id="btn">
Click
</button>
<p id="text">
  Clicked = false
</p>

फिर आप राज्य को सत्यापित कर सकते हैं जैसा आपने उल्लेख किया है

if (btnClicked === false) {
}
0
k13i 30 मार्च 2018, 22:48

इसे संभालने का सबसे आसान तरीका class एट्रिब्यूट के साथ इसे हैंडल करना है। उदाहरण के लिए:

document.querySelector('button').addEventListener('click', function() {
  if (this.classList.value.match(/not-yet-clicked/)) {
    this.classList.remove('not-yet-clicked');
    this.textContent = 'The button is clicked';
    this.disabled = true;
  }
})
<button class="not-yet-clicked">Click me</button>

या यदि आप ध्वज के साथ खेलना चाहते हैं, तो आप ऐसा करते हैं:

var clicked = false;
document.querySelector('button').addEventListener('click', function () {
  clicked = true;
  if (clicked) {
    this.textContent = 'Clicked';
    this.disabled = true;
  }
});
<button>Not yet clicked</button>
0
Radonirina Maminiaina 30 मार्च 2018, 22:39

यह जांचने के लिए आपके पास कई तरीके हैं कि क्या कोई बटन क्लिक नहीं किया गया है:

एक वैश्विक चर सेट करें:

var buttonClicked = false;

function clickButton() {
    buttonClicked = true;
}

एक कस्टम विशेषता सेट करें:

<button clicked="false">Click me</button>

function clickButton() {
    if (this.getAttribute('clicked') == 'false') {
        this.setAttribute('clicked', 'true');
    }
}

if (button.getAttribute('clicked') === 'true') {
   // your code
}
0
Tyr 30 मार्च 2018, 22:38
var clicked = false;

function check(){
 if (clicked === false) {
     // code
 };
}

target.addEventListener("click", function(){
    clicked = true;
    check()
});
0
KMG221 30 मार्च 2018, 22:36

बटनों को याद नहीं रहता कि क्या वे स्वचालित रूप से क्लिक किए गए थे। आप इस जानकारी को रखने के लिए बटन में एक dataset जोड़ सकते हैं।

var button1 = document.getElementById("button1");
button1.addEventListener("click", function() {
  button1.dataset.clicked = "true";
});

document.getElementById("button2").addEventListener("click", function() {
  console.log(button1.dataset.clicked ? "Yes" : "No");
});
<button id="button1">Click me</button>
<br>
<button id="button2">Was it clicked?</button>
3
Barmar 30 मार्च 2018, 22:38

यह आवश्यक रूप से प्रश्न का उत्तर नहीं देता है लेकिन यह संबंधित है। मैं एक क्लिक को कहीं और पंजीकृत करने का एक तरीका खोजना चाहता था, यह नहीं जानते कि आप उस तत्व के अलावा किसी अन्य क्लिक के लिए ईवेंट श्रोता के बजाय 'फोकसआउट' नामक एक ईवेंट श्रोता जोड़ सकते हैं।

यदि आपके पास कोई इनपुट है और आप जानना चाहते हैं कि कब कोई उससे दूर क्लिक करता है:

input.addEventListener('focusout', cellUnfocused);

function cellUnfocused() {
    console.log(this, "unfocused");
}

यह इनपुट तत्व को लॉग करेगा ताकि अब आप ऐसे कार्य कर सकें जैसे कि यह "क्लिक नहीं किया गया" श्रोता था।

0
imatwork 10 सितंबर 2020, 10:45