2016-03-23 6 views
0

Wenn ich folgendes auszuwählen, um einen bestimmten KnotenReferenzierung in .querySelector

var Link = document.querySelector('table .ctrlcLink'); 

ich die erste Spalte Wert für die Spalte mit Klasse ctrlLink verwenden, das ist das, was ich erwartet hatte.

Da jedoch ein onclick-Ereignis auf eine andere Spalte in derselben Tabelle festgelegt ist, möchte ich den Wert der .ctrlLink-Spalte abrufen, die sich in derselben Zeile wie mein angeklicktes Element befindet. Also habe ich versucht, so etwas wie dieses:

var Link = document.querySelector($(this).closest('tr').children('td.ctrlcLink')); 

Aber ich bekomme dann

„Failed to 'querySelector' auf 'Dokument' ausführen: '[object Object]' ist kein gültiger Selektor. "

Welchen Selektor sollte ich dann verwenden?

EDIT: Vielleicht sollte ich habe hinzugefügt, dass ich es brauche, damit ich die folgende später verwenden können:

var range = document.createRange(); 
range.selectNode(Link); 
window.getSelection().addRange(range); 
var successful = document.execCommand('copy'); 

EDIT2: wie vorgeschlagen, habe ich eine codepen Seite für diese (vielen Dank dafür !) .: http://codepen.io/whatwhat/pen/JXJjOp Die Sache, die ich versuche zu bekommen, ist, dass, wenn ich auf das Bild in der Tabelle klicke, ich den Text in der gleichen Zeile in der Zelle daneben und lege es in meine ctrl-c. Ich kann jedoch nicht die genaue Nummer des Bildes erreichen, auf das ich geklickt habe. Dieser Teil nicht funktioniert:

var rowIndex = $(this).index(); 

Was funktionieren würde, wie könnte ich das rownumber bekommen.? Ich würde es

Wechsel dann verketten
var Link = document.querySelector('#docReport tr:nth-child(1) .ctrlcLink'); 

zu

var Link = document.querySelector('#docReport tr:nth-child('+rowIndex+') .ctrlcLink'); 

Oder kann ich dies auf eine andere Weise lösen?

EDIT3: ich schließlich bekam, was ich so benötigt: http://codepen.io/whatwhat/pen/GZEgKK

+1

Bitte senden Sie minimalistische Probe Ihr Problem zu replizieren, weil tatsächlich Ihre Frage nicht wirklich Sinn –

Antwort

1

Sie brauchen nicht querySelector überhaupt, verwenden Sie einfach

var Link=$(this).closest('tr').children('td.ctrlcLink'); 
0

Sie sollten JQuery Ereignis verwenden, statt ‚Onclick ".

http://codepen.io/nigayo/pen/oxwYwz?editors=1010

$("#docReport img.smiley-img").on("click", function(){ 

    var Link = $(this).parent().prev()[0]; 
    var range = document.createRange(); 
    //blah...blah.. 
}); 
+0

In meinem html macht habe ich Onclick = "CTRLC (this);" In meinem js: Funktion ctrlc (link) { var Link = link.target.nextSibling.querySelector ('td.ctrlcLink'); var Bereich = document.createRange(); Bereich.AuswahlNode (Link); window.getSelection(). AddRange (Bereich); var erfolgreich = document.execommand ('copy');} Noch bekomme ich Fehler mssg "Kann Eigenschaft 'nextSibling' von undefined nicht lesen" – user3615590

+0

Ich bin neu bei diesem, ich kann nicht scheinen, meinen Kommentar zu formatieren. – user3615590

+0

@ user3615590 Sie sollten auf diesen Link verweisen. http://codepen.io/nigayo/pen/wGdQQK – superui