it\'s a really simple question. The or operator is not working, i am trying to display a different function for both the title and amount field name. Thank you
$
You either have to restate the condition like
if (field.name === "title" || field.name === "amount")
or you can use an array
if (["title","amount"].indexOf(field.name) > -1)
Your code is executing like this:
temp = "title" || "amount"; // two "true" values, so "title" is assigned
if (field.name == temp);{ ... };
which is effectively:
temp = "title";
if (field.name == temp) { ... }
To test one varaible against multiple strings, you have to write out the individual tests directly:
if ((field.name == "title") || (field.name == "amount")) { ... }
and if you need to test against MANY items for which this kind of stuff would get tedious, you can try an array:
if (["title", "amount", ...].indexOf(field.name) > -1) { ... }
You can't use ||
like that.
You need to do:
if (field.name === "title" || field.name === "amount")
Each statement on either side of the OR are completely separate, and evaluate themselves to be a single boolean value, true
or false
. Therefore, field.name === "title"
will evaluate itself to be true
or false
, and then "amount"
will try to evaluate itself as true
or false
.
I believe anything non-empty and non-zero is treated as true
, so your OR statement will always be true as "amount"
will always evaluate to true
.
You can also do:
if (["title", "amount"].indexOf(field.name) > -1)
This is especially useful if you have more than 2 values to test.