[英]JavaScript push to array object is not working
我有一個 html 如下所示
HTML:
<INPUT TYPE=CHECKBOX NAME="clcik" onClick="add('1234','blah')" />
<input type="hidden" id="project" value="" />
JS:
function add(obj1 , obj2){
var jsonArray = [];
var jsonObj = { product_id : obj1 , name : obj2 };
jsonArray.push(jsonObj);
var field = document.getElementById('project');
field.setAttribute('value', JSON.stringify(jsonArray));
alert(field.getAttribute('value'));
}
我正在嘗試先設置並再次檢索以進行檢查,但什么也沒有發生……我不明白我錯在哪里……?
我猜你錯過了將 stringify 結果放入stringData
變量,因為在它到達你試圖提醒值的行之前你會收到一個 js 錯誤。
JSON
或JSON.stringify
不是由jQuery
提供的,如果瀏覽器本身不支持它,則必須在頁面上包含json2庫。
嘗試這個
function add(obj1 , obj2){
var jsonArray = [];
var jsonObj = { product_id : obj1 , name : obj2 };
jsonArray.push(jsonObj);
var stringData = JSON.stringify(jsonArray);
var field = document.getElementById('project');
field.setAttribute('value', stringData);
alert(field.getAttribute('value'));
}
根據您在評論中的請求從數組中刪除元素的代碼。
var newArray = [], productIdToRemove = "1234";
$.each(jsonArray, function(){
if(this.product_id != productIdToRemove){
newArray.push(this);
}
});
//Now newArray will not have '1234'
改變
JSON.stringify(jsonArray)
// to
var stringData = JSON.stringify(jsonArray);
小提琴的其他問題,已修復: http://jsfiddle.net/mattball/qWCwa/7/
在您的示例中,您從未設置stringData
。
直接在輸入上獲取/設置“值”屬性,而不是 getAttribute 和 setAttribute 方法。
更改代碼以分配 stringData 后,它似乎對我有用:
function add(obj1 , obj2){
var jsonArray = [];
var jsonObj = { product_id : obj1 , name : obj2 };
jsonArray.push(jsonObj);
var stringData = JSON.stringify(jsonArray)
var field = document.getElementById('project');
field.setAttribute('value', stringData);
alert(field.getAttribute('value'));
}
add(1, 2);
你可以看到它在這里工作: http://jsfiddle.net/jfriend00/HNuak/ 。
僅供參考,如果您只是在可以看到 javascript 執行錯誤(如 Chrome 或 Firefox 調試器)的環境中運行,則在錯誤控制台中很容易看到此類錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.