JS 新的 FormData 将未定义的值前置
JS new FormData prepending undefined to value
我正在使用 JS 和 FormData 从 html 表单中收集值,然后创建保存在 localStorage 中的字符串。但是我在第一个值前面加上“未定义”。
我的表格:
<form id="prd2">
<input type="hidden" name="product" value="et345">
<input type="hidden" name="name" value="Tshirt">
<select name="quantity"><option value="1">1</option><option value="2">2</option><option>etc</option></select><br>
<input type="hidden" name="img" value="img345">
<input type="hidden" name="optType" value="clothing">
<button id="btn2" class="addcart">Add to Cart</button>
</form>
我的 JS 获取值:
var additem;
var frm = document.getElementById('prd2');
var data = new FormData(frm);
for (var value of data.values()) {
additem += value + '|';
}
我也试过设置var additem = '';
我期望 additem 的值为:
et345|Tshirt|2|img345|clothing|
但我最终得到的是:
undefinedet345|Tshirt|2|img345|clothing|
虽然我可以在存储之前从字符串中手动删除“undefined”,但我更愿意找出它被附加到开头的原因。
分配零长度字符串将解决此问题。
这样做:
var additem = "";
而不是这个:
var additem;
因为Javascript自然地给每个变量赋值undefined
,所以当你用另一个字符串添加它时,它只会附加undefined。
例如:
var shouldBeUndefined;
var shouldBeNullString = "";
console.log(shouldBeUndefined);
console.log(shouldBeNullString);
shouldBeUndefined += "concat";
shouldBeNullString += "concat";
console.log(shouldBeUndefined);
console.log(shouldBeNullString);
完整的工作代码:
var additem = "";
var frm = document.getElementById('prd2');
var data = new FormData(frm);
for (var value of data.values()) {
additem += value + '|';
}
console.log(additem);
<form id="prd2">
<input type="hidden" name="product" value="et345">
<input type="hidden" name="name" value="Tshirt">
<select name="quantity"><option value="1">1</option><option value="2">2</option><option>etc</option></select><br>
<input type="hidden" name="img" value="img345">
<input type="hidden" name="optType" value="clothing">
<button id="btn2" type="submit" class="addcart">Add to Cart</button>
</form>
我正在使用 JS 和 FormData 从 html 表单中收集值,然后创建保存在 localStorage 中的字符串。但是我在第一个值前面加上“未定义”。
我的表格:
<form id="prd2">
<input type="hidden" name="product" value="et345">
<input type="hidden" name="name" value="Tshirt">
<select name="quantity"><option value="1">1</option><option value="2">2</option><option>etc</option></select><br>
<input type="hidden" name="img" value="img345">
<input type="hidden" name="optType" value="clothing">
<button id="btn2" class="addcart">Add to Cart</button>
</form>
我的 JS 获取值:
var additem;
var frm = document.getElementById('prd2');
var data = new FormData(frm);
for (var value of data.values()) {
additem += value + '|';
}
我也试过设置var additem = '';
我期望 additem 的值为:
et345|Tshirt|2|img345|clothing|
但我最终得到的是:
undefinedet345|Tshirt|2|img345|clothing|
虽然我可以在存储之前从字符串中手动删除“undefined”,但我更愿意找出它被附加到开头的原因。
分配零长度字符串将解决此问题。
这样做:
var additem = "";
而不是这个:
var additem;
因为Javascript自然地给每个变量赋值undefined
,所以当你用另一个字符串添加它时,它只会附加undefined。
例如:
var shouldBeUndefined;
var shouldBeNullString = "";
console.log(shouldBeUndefined);
console.log(shouldBeNullString);
shouldBeUndefined += "concat";
shouldBeNullString += "concat";
console.log(shouldBeUndefined);
console.log(shouldBeNullString);
完整的工作代码:
var additem = "";
var frm = document.getElementById('prd2');
var data = new FormData(frm);
for (var value of data.values()) {
additem += value + '|';
}
console.log(additem);
<form id="prd2">
<input type="hidden" name="product" value="et345">
<input type="hidden" name="name" value="Tshirt">
<select name="quantity"><option value="1">1</option><option value="2">2</option><option>etc</option></select><br>
<input type="hidden" name="img" value="img345">
<input type="hidden" name="optType" value="clothing">
<button id="btn2" type="submit" class="addcart">Add to Cart</button>
</form>