Ich habe eine seltsame Javascript-Problem. Ich verwende vue js und axios, um einige Daten von einer API zu bekommen. Ich habe console.log ausgegeben und die Werte sind da, aber meine if-Anweisung wird nicht wahr sein.Javascript wenn nicht wahr
Die Dateien wurden entfernt, damit das Codebeispiel kleiner ist.
Siehe Inline-Kommentare.
HTML:
<input v-model="system_id">
<button v-on:click="getSystemData" class="btn btn-primary">Get system data</button>
Data model:
data:() => ({
errors: [],
system_id: null,
system_data: null
}),
Function:
getSystemData() {
HTTP.get('/api/get_systems')
.then(response => {
this.response = response.data
// equals 1234
console.log(this.system_id)
for (var key in this.response) {
// the id 1234 is found here in a large list
console.log(this.response[key].system_id)
// Does not go true?!?!
if (this.response[key].system_id === this.system_id) {
this.system_data = this.response[key].system_data
}
}
})
.catch(e => {
this.errors.push(e)
})
}
Warum funktioniert das wenn nie?
Zunächst würde ich sicherstellen, dass die Aussage tatsächlich wahr ist. Zum Beispiel, indem Sie zuvor einen Debugger in die Zeile setzen. Oder wie sonst haben Sie sich selbst bewiesen, wenn die Aussage jemals wahr ist? – trueunlessfalse
Was ist der Typ für 'this.system_id'? https://stackoverflow.com/questions/359494/which-equals-operator-vs-should-be-used-in-javascript-comparisons –
Versuchen Sie mit '==' anstelle von '==='. Der Operator "===" prüft Wert und Typ. Ich kenne Ihren Fall nicht, aber vielleicht haben Ihre Werte verschiedene Arten, z. 'Nummer' und' Zeichenfolge'? – mingos