2017-01-09 3 views
-3

Angesichts der folgenden htmlJavascript oder Jquery html Array Länge

<input name="altLocation[1][name]"> 
<input name="altLocation[1][location]"> 
<br> 
<input name="altLocation[2][name]"> 
<input name="altLocation[2][location]"> 
<br> 
<input name="altLocation[3][name]"> 
<input name="altLocation[3][location]"> 

Gibt es einen Weg finden, um die Länge von altLocation mit JS oder jQ zu finden?

+0

Würden Sie nicht einfach 'altLocation.length' verwenden? Ansonsten habe ich absolut keine Ahnung wovon du sprichst. –

+0

Was haben * Sie * ausprobiert? – j08691

+1

Um Ihre Frage zu beantworten: Ja – empiric

Antwort

0
document.querySelectorAll("input[name^=altLocation]").length; // `NodeList` 

Array.from(document.querySelectorAll("input[name^=altLocation]")).length; // `Array` 
+0

Warum konvertieren Sie es in ein Array, nur um die Länge zu erhalten? Per Definition hat jedes arrayähnliche Objekt eine Eigenschaft '.length'? – Barmar

+0

@Barmar Um spezifischen Text bei Frage zu adressieren. OP erwähnt "Array". Nicht nur um '.length' zu bekommen. – guest271314

+0

Ich denke, das Array, nach dem er fragt, ist die Eingabe mit Array-Namen, er fragt nicht wirklich nach einem Javascript-Array. – Barmar

0

Sie können die length jeder jQuery-Selektor erhalten, Ihnen zu sagen, wie viele es gefunden hat.

jQuery ermöglicht auch vollständige css Selektoren, einschließlich ^= 'beginnt mit'.

Sie können die 2 kombinieren, um Folgendes zu erhalten.

Nicht sicher, ob Sie 6 oder 3 als Antwort haben wollten. Entfernen Sie einfach die / 2 wenn Sie nicht 6 3.

console.log($('input[name^=altLocation]').length/2);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name="altLocation[1][name]"> 
 
<input name="altLocation[1][location]"> 
 
<br> 
 
<input name="altLocation[2][name]"> 
 
<input name="altLocation[2][location]"> 
 
<br> 
 
<input name="altLocation[3][name]"> 
 
<input name="altLocation[3][location]">

+0

Und wenn der Name der Eingabe ist: altLocationWrong [1] [Name] '? – klenium

+0

nenne es etwas anderes wie 'wrong_altLocation', also wird es oben ignoriert. Oder führen Sie einen weiteren jQuery-Filter aus, um diejenigen auszuschließen, die Sie nicht möchten. Ich denke, dass Sie etwas wie 'not (input [name * = altLocationWrong]') verwenden können, um das oben genannte auszuschließen –

0

Versuchen Sie, diese wollten, unter der Annahme, dass jedes "Element" von altLocation eine name "Eigentum" hat:

var x = document.getElementsByTagName('INPUT'); 
var total = 0; 
for (var i = 0 ; i < x.length ; i++) 
    if (x[i].name && /^altLocation\[.*\[name\]$/.test(x[i].name)) 
    total++; 

alert('Length is: '+ total); 

JSFIDDLE DEMO

+0

Der erste 'indexOf()' Test sollte '=== 0' sein, damit Sie nicht durch' Name täuschen lassen = "anotheraltLocation [1] [name]" ' – Barmar

+0

@Barmar danke. behoben – remdevtec

+0

Du solltest'. * 'zu' \ d + \] ' – klenium