我有一个类似下面的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'));
}
我试图先设置并再次检索以检查但没有发生任何事情......我无法理解我错在哪里......?
答案 0 :(得分:4)
我猜你错过了将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'
答案 1 :(得分:1)
更改
JSON.stringify(jsonArray)
// to
var stringData = JSON.stringify(jsonArray);
小提琴的其他问题,已修复:http://jsfiddle.net/mattball/qWCwa/7/
答案 2 :(得分:0)
在您的示例中,您从未设置stringData
。
答案 3 :(得分:0)
直接在输入上获取/设置“value”属性,而不是getAttribute和setAttribute方法。
答案 4 :(得分:0)
更改代码以分配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调试程序)中运行,则可以在错误控制台中轻松查看此类错误。