Javascript 如何在对象中存储html属性?

Javascript 如何在对象中存储html属性?,javascript,json,Javascript,Json,我第一次体验javascript对象,需要一些帮助。我想将生成的用户输入存储在对象中,将它们放入数组中,然后再重用它们。到目前为止,我已经得出以下结论: function changeColors() { //get the numbers from the html var rd = parseInt(document.getElementById("red").value); var gr = parseInt(document.getElementById("green").value)

我第一次体验javascript对象,需要一些帮助。我想将生成的用户输入存储在对象中,将它们放入数组中,然后再重用它们。到目前为止,我已经得出以下结论:

 function changeColors() {
//get the numbers from the html
var rd = parseInt(document.getElementById("red").value);
var gr = parseInt(document.getElementById("green").value);
var bl = parseInt(document.getElementById("blue").value);
var op = parseFloat(document.getElementById("opacity").value);


//convert the decimal into hexadecimal

var rdhex = (rd < 16) ? "0" + rd.toString(16) : rd.toString(16);
var grhex = (gr < 16) ? "0" + gr.toString(16) : gr.toString(16);
var blhex = (bl < 16) ? "0" + bl.toString(16) : bl.toString(16);

//concatenate all hex to generate a color
var hexcode = "#" + rdhex + grhex + blhex;

//view the change in the browser
document.getElementById("div").style.backgroundColor = hexcode;
document.getElementById("colordisplay").innerHTML = hexcode;
//change opacity
document.getElementById("div").style.opacity = op;
我的问题是:这有多错误?如何纠正? 谢谢大家!

试试这个:

var colors = {
  "nextColor": []
};
function Save() {
  colors.nextColor.push({
    "name": document.getElementById("name").value,
    "rgb": document.getElementById("colordisplay").innerHTML,
    "opacity": document.getElementById("div").style.opacity
  });
  console.log(colors);
}
请注意,
colors
变量应该在函数范围之外,以便在
Save()
函数的各个运行之外保留变量。 我还将代码简化了不少。

试试这个:

var colors = {
  "nextColor": []
};
function Save() {
  colors.nextColor.push({
    "name": document.getElementById("name").value,
    "rgb": document.getElementById("colordisplay").innerHTML,
    "opacity": document.getElementById("div").style.opacity
  });
  console.log(colors);
}
请注意,
colors
变量应该在函数范围之外,以便在
Save()
函数的各个运行之外保留变量。 我还将代码简化了不少。

试试这个:

var colors = {
  "nextColor": []
};
function Save() {
  colors.nextColor.push({
    "name": document.getElementById("name").value,
    "rgb": document.getElementById("colordisplay").innerHTML,
    "opacity": document.getElementById("div").style.opacity
  });
  console.log(colors);
}
请注意,
colors
变量应该在函数范围之外,以便在
Save()
函数的各个运行之外保留变量。 我还将代码简化了不少。

试试这个:

var colors = {
  "nextColor": []
};
function Save() {
  colors.nextColor.push({
    "name": document.getElementById("name").value,
    "rgb": document.getElementById("colordisplay").innerHTML,
    "opacity": document.getElementById("div").style.opacity
  });
  console.log(colors);
}
请注意,
colors
变量应该在函数范围之外,以便在
Save()
函数的各个运行之外保留变量。
我还将代码简化了很多。

我不确定您的问题到底是什么,但看看您的Save代码,我假设您正在询问如何在应用程序上下文中最好地存储数据。查看保存方法主体:

var colors = {};
var nextColor = [];
这些变量仅在Save函数的作用域中可用。因此,“颜色”对象将只包含一个单色对象,即在保存功能中创建的“nextColor”对象。除此之外,“颜色”-对象在保存函数之外是不可访问的,呈现它。。。嗯,没用

理想情况下,您将“colors”对象的内容保存在全局变量中(或在应用程序可用的另一个对象中引用它,即“模型”),并使用Save方法的返回值填充colors对象,即:

function Save() {
    var rgb =  document.getElementById("colordisplay").innerHTML;
    var opacity = document.getElementById("div").style.opacity;
    var name = document.getElementById("name").value;
    var nextColor = {
        "name": name,
        "rgb": rgb,
        "opacity": opacity
    };
    return nextColor;
 }

 // assume an event handler invoked after a form is submitted, this
 // creates a nextColor and pushes it into the existing colors Object
 function someEventHandler( e ) {
     colors.nextColor.push( Save() );
 } 
这意味着Save methods的唯一功能是收集HTML文档中输入的值,并将其转换为新的值对象。Save方法现在不必知道属于应用程序的任何剩余数据。(即,“colors”对象及其“nextColor”-数组的创建应由另一个函数完成,理想情况下在应用程序启动时执行)

我想我说的是,您走的是正确的道路,但是您可以通过投入一些时间来创建单独的函数来处理数据层,从而获得很多好处。毕竟,JSON就是数据

例如,如果您想在Save()方法中输入validation(比如说,确保“name”输入元素实际包含有效字符串),您只需在该函数中修改它即可。如果您还希望确保相同的颜色不会两次添加到“nextColor”-数组中,则可以使用另一个函数来检查数据对象中是否已存在具有相同值的颜色,并将其删除或防止将重复值推送到数组中。这是不应该出现在Save()方法中的逻辑,因此,您可以构建程序以整齐地组织数据


我希望这就是您要寻找的答案。

我不确定您的问题到底是什么,但看看您的Save代码,我假设您正在询问如何在应用程序上下文中最好地存储数据。查看保存方法主体:

var colors = {};
var nextColor = [];
这些变量仅在Save函数的作用域中可用。因此,“颜色”对象将只包含一个单色对象,即在保存功能中创建的“nextColor”对象。除此之外,“颜色”-对象在保存函数之外是不可访问的,呈现它。。。嗯,没用

理想情况下,您将“colors”对象的内容保存在全局变量中(或在应用程序可用的另一个对象中引用它,即“模型”),并使用Save方法的返回值填充colors对象,即:

function Save() {
    var rgb =  document.getElementById("colordisplay").innerHTML;
    var opacity = document.getElementById("div").style.opacity;
    var name = document.getElementById("name").value;
    var nextColor = {
        "name": name,
        "rgb": rgb,
        "opacity": opacity
    };
    return nextColor;
 }

 // assume an event handler invoked after a form is submitted, this
 // creates a nextColor and pushes it into the existing colors Object
 function someEventHandler( e ) {
     colors.nextColor.push( Save() );
 } 
这意味着Save methods的唯一功能是收集HTML文档中输入的值,并将其转换为新的值对象。Save方法现在不必知道属于应用程序的任何剩余数据。(即,“colors”对象及其“nextColor”-数组的创建应由另一个函数完成,理想情况下在应用程序启动时执行)

我想我说的是,您走的是正确的道路,但是您可以通过投入一些时间来创建单独的函数来处理数据层,从而获得很多好处。毕竟,JSON就是数据

例如,如果您想在Save()方法中输入validation(比如说,确保“name”输入元素实际包含有效字符串),您只需在该函数中修改它即可。如果您还希望确保相同的颜色不会两次添加到“nextColor”-数组中,则可以使用另一个函数来检查数据对象中是否已存在具有相同值的颜色,并将其删除或防止将重复值推送到数组中。这是不应该出现在Save()方法中的逻辑,因此,您可以构建程序以整齐地组织数据


我希望这就是您要寻找的答案。

我不确定您的问题到底是什么,但看看您的Save代码,我假设您正在询问如何在应用程序上下文中最好地存储数据。查看保存方法主体:

var colors = {};
var nextColor = [];
这些变量仅在Save函数的作用域中可用。因此,“颜色”对象将只包含一个单色对象,即在保存功能中创建的“nextColor”对象。除此之外,“颜色”-对象在保存函数之外是不可访问的,呈现它。。。嗯,没用

理想情况下,你可以