簡體   English   中英

JavaScript 推送到陣列 object 不起作用

[英]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 錯誤。

JSONJSON.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM