मैं एक एक्सटेंशन बना रहा हूं जिसके लिए क्लिपबोर्ड पर कॉपी करने की आवश्यकता है, लेकिन मैं 18 अलग-अलग कार्य नहीं करना चाहता जो एक ही चीज़ (काफी ज्यादा) करते हैं।

यह वह कार्य है जिसे मैंने लिखा था:

function copyS1_1() {
    var letter_to_copy = document.getElementById('textarea-S1-1');
    letter_to_copy.select();
    navigator.clipboard.writeText(letter_to_copy.value);
}
function copyS1_2() {
    var letter_to_copy = document.getElementById('textarea-S1-2');
    letter_to_copy.select();
    navigator.clipboard.writeText(letter_to_copy.value);
}

प्रत्येक फ़ंक्शन को 'सेक्शन' के लिए 'कॉपीएस#_#' कहा जाता है, फिर उस सेक्शन में नंबर। मैं इनमें से 18 नहीं चाहता, इसलिए मैं इसे 3 कार्यों तक सरल बनाने का एक तरीका ढूंढ रहा हूं (प्रत्येक अनुभाग के लिए एक, वहां 3 है)।

1
jasonhe 15 जिंदा 2022, 21:08
2
फ़ंक्शन तर्कों का उपयोग करें। तत्व आईडी (या दो #s) को एक पैरामीटर के रूप में घोषित करें।
 – 
Bergi
15 जिंदा 2022, 21:10
"इसे 3 कार्यों तक सरल बनाएं" - क्यों न केवल 1 फ़ंक्शन के लिए पूरी तरह से नीचे जाएं?
 – 
Bergi
15 जिंदा 2022, 21:11
मैं कर सकता था, और यह बेहतर होगा, लेकिन मुझे नहीं पता था कि इसे शुरू करने के बारे में कैसे जाना है, इसलिए मैंने अभी कुछ ऐसा कहा जो ऐसा लग रहा था कि यह आसान हो सकता है, और कैम ने जो कहा, मैं 3 कार्यों का उपयोग करूँगा , लेकिन यह देखते हुए कि कैम ने इसे कैसे किया, मैं इसे 1 फ़ंक्शन तक सरल बना सकता हूं।
 – 
jasonhe
15 जिंदा 2022, 21:13

5 जवाब

आप इसे टेम्प्लेट शाब्दिक और फ़ंक्शन तर्कों के साथ कर सकते हैं।

function copyFuncForAny(num1, num2) {
    var letter_to_copy = document.getElementById(`textarea-S${num1}-${num2}`);
    letter_to_copy.select();
    navigator.clipboard.writeText(letter_to_copy.value);
}

copyFuncForAny(1, 1);
copyFuncForAny(1, 2);

2
sean-7777 15 जिंदा 2022, 21:12

आप एक पैरामीटर जोड़ सकते हैं:

function copyS1(id) {
    var letter_to_copy = document.getElementById('textarea-S1-' + id);
    letter_to_copy.select();
    navigator.clipboard.writeText(letter_to_copy.value);
}

ऐसे करें इस्तेमाल:

copyS1(1)
copyS1(2)
...
0
Cam 15 जिंदा 2022, 21:11
इसलिए मैंने वास्तव में यह कोशिश की, लेकिन मुझे लगता है क्योंकि मैं आपके सुझाव के साथ document.getElementById('Sec1_BTN1').addEventListener('click', copyS1(1)); का उपयोग कर रहा हूं, यह पेज लोड पर ईवेंट को ट्रिगर कर रहा है। कोई विचार?
 – 
jasonhe
15 जिंदा 2022, 21:39

इसका सरल बस इस तरह आपका अपना कार्य

function copyText(id) {
    var letter_to_copy = document.getElementById(id);
    letter_to_copy.select();
    navigator.clipboard.writeText(letter_to_copy.value);
}

जितनी बार चाहें उतनी बार इसका इस्तेमाल करें।

0
Mubasher Ali 15 जिंदा 2022, 21:12

आप स्ट्रिंग को तर्क के रूप में क्यों पास नहीं करते?

function copyS1_1(id) {
  var letter_to_copy = document.getElementById(id);
  letter_to_copy.select();
  navigator.clipboard.writeText(letter_to_copy.value);
}
0
Lukas Schneider 15 जिंदा 2022, 21:12

textarea-S1-1 यहां इसका एकमात्र परिवर्तनशील मान है, इसलिए आप इसे एक सामान्य फ़ंक्शन के लिए पैरामीटर के रूप में पास कर सकते हैं

function copyS1(textarea) {
    var letter_to_copy = document.getElementById(textarea);
    letter_to_copy.select();
    navigator.clipboard.writeText(letter_to_copy.value);
}

और इसे अनुसरण के रूप में उपयोग करें

var copyS1_1 = copyS1('textarea-S1-1')
var copyS1_2 = copyS1('textarea-S1-2')
0
ndotie 15 जिंदा 2022, 21:13