मेरे पास निम्न स्क्रिप्ट है जो एक तालिका से सेल डेटा की प्रतिलिपि बनाती है (वह सेल छुपा हुआ है - जेएस डेटा पकड़ लेता है, शो को इसे क्षणिक दिखाना होता है); यह बहुत अच्छा काम करता है, लेकिन केवल "bbcode2" आईडी और किसी भी पंक्ति पर "onclick="CopyToClipboard2" पर केवल पहली पंक्ति "bbcode2" आईडी रिकॉर्ड को प्रभावित करता है

मुझे नहीं पता कि जेएस को उसी पंक्ति पर एक ही पंक्ति पर ऑनक्लिक बटन के रूप में कैसे प्राप्त किया जाए। मैंने .निकटतम (# bbcode2) जोड़ने की कोशिश की, लेकिन वह अभी भी केवल bbcode2 के पहले उदाहरण को पकड़ लेता है

यदि मुझे आवश्यकता हो तो मैं bbcode2 को एक गतिशील आईडी से बदल सकता हूं

<script type="text/javascript">
function CopyToClipboard2() {
    document.getElementById("bbcode2").style.display = 'block';
    document.getElementById("bbcode2").focus();
    if (document.selection) {
        var range = document.body.createTextRange();
        range.moveToElementText(document.getElementById("bbcode2"));
        range.select().createTextRange();
        document.execCommand("Copy");
    } else if (window.getSelection) {
        window.getSelection().removeAllRanges();
        var range = document.createRange();
        range.selectNode(document.getElementById("bbcode2"));
        window.getSelection().addRange(range);
        document.execCommand("Copy");
    }
    document.getElementById("bbcode2").style.display = 'none';
}

संपादित करें -

मैंने प्रत्येक रिकॉर्ड में एक वेरिएबल आईडी जोड़ा है, और अब मेरे पास निम्नलिखित हैं, लेकिन इसके लिए काम करने के लिए मुझे सेल पर क्लिक करने की आवश्यकता है। मैं चाहता हूं कि यह तालिका में एक ही पंक्ति पर एक बटन के माध्यम से हो

विचार?

addEventListener('click', function (ev) {
    var serviceID = ev.target.id;
    alert(serviceID);
    if (document.selection) {
        var range = document.body.createTextRange();
        range.moveToElementText(document.getElementById(serviceID));
        range.select().createTextRange();
        document.execCommand("Copy");
    } else if (window.getSelection) {
        window.getSelection().removeAllRanges();
        var range = document.createRange();
        range.selectNode(document.getElementById(serviceID));
        window.getSelection().addRange(range);
        document.execCommand("Copy");
    }
    document.getElementById(serviceID).style.display = 'none';
})
2
JimBob 9 अक्टूबर 2018, 03:57

1 उत्तर

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

मैंने जो किया वह ऑनक्लिक में एक आईडी जोड़ने के लिए रेल का उपयोग किया गया था

CopyToClipboard2(<%=f.id %>)

फिर इसका उपयोग जेएस को यह बताने के लिए करें कि किस आईडी को लक्षित करना है

<script type="text/javascript">
function CopyToClipboard2(clicked_id) {
    document.getElementById(clicked_id).style.display = 'block';
    document.getElementById(clicked_id).focus();
    if (document.selection) {
        var range = document.body.createTextRange();
        range.moveToElementText(document.getElementById(clicked_id));
        range.select().createTextRange();
        document.execCommand("Copy");
    } else if (window.getSelection) {
        window.getSelection().removeAllRanges();
        var range = document.createRange();
        range.selectNode(document.getElementById(clicked_id));
        window.getSelection().addRange(range);
        document.execCommand("Copy");
    }
    document.getElementById(clicked_id).style.display = 'none';
}

एक इलाज करता है :)

0
JimBob 14 अक्टूबर 2018, 02:35