2017-12-05 7 views
-7

Zuerst habe ich die meisten ähnlichen Fragen in StackOverflow und nichts ist relevant.Wie bekomme ich eine dynamische ID über 'getElementById' in Javascript

Ich habe eine Tabelle, die ID für jeden td dynamisch erstellt hat. (Beispiel: ein TD hat eine ID "0 0")

Ich muss auf diesen bestimmten TD mit der ID zugreifen. Ich habe versucht, den folgenden Code:

document.getElementById("\""+rowID + " " + 0 + "\""); 

Dies wirft "null". "rowID" ist ebenfalls dynamisch definiert.

Wenn ich versuche, die folgenden:

document.getElementById("0 0"); 

ich die folgende Ausgabe korrekt erhalten:

<td class=​"cell" id=​"0 0">​20​</td>​ 

Jede Hilfe sehr geschätzt wird.

+5

Räume nicht in Kennung erlaubt – Satpal

+0

'document.getElementById (rowID + "" +0); 'oder' document.getElementById ('' '+ rowID +' 0 ''); ' –

+0

Wenn Sie dynamische Bezeichner angeben müssen, versuchen Sie eine GUID zu verwenden. Wenn Sie jedoch sowohl Spalten als auch Zeilen verfolgen müssen, würde ich empfehlen, sie getrennt zu halten, da ihre Absicht nicht mit der eines Elementbezeichners übereinstimmt. dh: für die Spalte 2 in der Zeile 1 ' 20' können Sie noch nach den Elementen abfragen 'document.querySelector ('[data-row-id =" 1 "] [data-col-id =" 2 "]')' Sie können 'td' und' row- auch nur die 'col-id' zuweisen id 'bis' tr 'Elemente, wenn Sie möchten, abhängig von den erforderlichen Funktionen. – Nope

Antwort

4

Dies läuft auf: Wie mache ich String-Verkettung in JavaScript?

document.getElementById(rowID + " 0"); 
// or if we assume a `colID` variable: 
document.getElementById(rowID + " " + colID); 

jedoch, beachten Sie, dass Sie nur über die einzige Regel bricht es für das id Attribut ist: Es cannot contain a space. Bei einigen Browsern können Sie diesen Platz frei haben (Chrome, Firefox und IE11 tun das alles), aber das ist ausdrücklich nicht erlaubt.

mit den Raum ersetzen (sagen wir) einen Unterstrich (_) oder einem x sowohl in der id Attribut und Ihren Code. Zum Beispiel 0x0. (id s mit Ziffern beginnen, obwohl die Leute werden Ihnen sagen, sie können nicht, weil ein CSS-ID Selektor kann nicht mit einer unescaped Ziffer beginnen.)

+1

oder nehmen Sie eine ID mit der Bedeutung, wie "row0col0". –

+0

@NinaScholz: Sicher, oder '0x0', da es eine ziemlich übliche Art ist, Zeile + Spalte auszudrücken. –

Verwandte Themen