我正在嘗試將復選框值作為陣列獲取,因此稍后我可以將它們用作 GET 請求的一部分。
復選框是這樣的:
<input type="checkbox" name="diet" value="gluten"/>
<input type="checkbox" name="diet" value="vegetarian"/>
<input type="checkbox" name="diet" value="vegan"/>
我(幾乎)用這個抓住了他們:
function getCheckboxValues(form){
var values= [];
var diet = form.diet;
for (let i = 0; i <diet.length; i ) {
if (diet[i].checked) {
values.push(diet[i].value);
}
}
return values;
}
然后我想讓他們進入:
var reqDiet = []; //global
所以我可以將它合并到我的 get params 中
document.getElementById("submit-btn").addEventListener("click", function (){
reqParams = "&diet=" reqDiet ",
getRecipe(ASK_RECIPE, reqParams)
})
async function getRecipe(reqRecipe, reqParameters){
let response = await fetch(reqRecipe API_KEY reqParameters);
recipe = await response.json();
let recipeStored = JSON.stringify(recipe);
sessionStorage.setItem("recipe",recipeStored);
};
問題是,如果我getCheckboxValues("form_id")在控制臺中運行,它會回傳帶有專案的正確陣列,但是如果我執行類似的操作
reqDiet = getCheckboxValues("form_id");
控制臺說:
未捕獲(承諾)型別錯誤:無法在 getCheckboxValues 處讀取未定義的屬性(讀取“長度”)
我從中可以理解的是,當我執行最后一個時,我的程式沒有將“diet.length”識別為一個陣列,但是當我自己運行該函式時,它會識別出來。我更喜歡在 vanilla JS 中執行此操作,因為我是新來的并嘗試做這個小專案。
PS:感謝帖子中的任何反饋,因為這是我的第一個反饋,我認為非常大:/對此感到抱歉
uj5u.com熱心網友回復:
你需要做 reqDiet = getCheckboxValues(document.getElementById('form_id'))
該函式需要一個 DOM 節點而不是字串,因此您會收到該錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/393487.html
標籤:javascript
