在javascript中创建struct

在javascript中创建struct,javascript,Javascript,我用我在stackoverflow上找到的一篇帖子创建了我自己的“结构创建者”,但它似乎不起作用,我不明白为什么 function makeStruct(names) { var names = names.split(' '); var count = names.length; function constructor() { for (var i=0; i<5; i++) { this[names[i]] = argum

我用我在stackoverflow上找到的一篇帖子创建了我自己的“结构创建者”,但它似乎不起作用,我不明白为什么

function makeStruct(names) {
    var names = names.split(' ');
    var count = names.length;
    function constructor() {
        for (var i=0; i<5; i++) {
            this[names[i]] = arguments[i];
        }
        for (var i = 5; i < count; i++) {
            this[names[i]] = getFloat(arguments[i-4]);
        }
    }
    return constructor;
}
所以B可以存储5ID和id2到id5的值。。。但它什么也不做:(

我知道这很简单,但我不太擅长javascript

谢谢

编辑:添加一些代码

function getFloat(uneID) {
    var d = document.getElementById(uneID); 
    var r = 0;
    if (d) {//not null
        d = document.getElementById(uneID).value;
        if(d){//not undefined
            r = parseFloat(d.replace(",", "."));
            r = isNaN(r) ? 0 : r;
        }
    }
    return r;
}

function makeStruct(names) {
    var names = names.split(' ');
    var count = names.length;
    function constructor() {
        for (var i=0; i<5; i++) {
            this[names[i]] = arguments[i];
        }
        for (var i = 5; i < count; i++) {
            this[names[i]] = getFloat(arguments[i-4]);
        }
    }
    return constructor;
}

var Aliment = makeStruct("qtt glu pro lip cal gluv prov lipv calv");
var dej = new Aliment('<%=frmAlim.FindControl("QTTdej1").ClientID %>',
    '<%=frmAlim.FindControl("GLUdej1").ClientID %>',
    '<%=frmAlim.FindControl("PROdej1").ClientID %>',
    '<%=frmAlim.FindControl("LIPdej1").ClientID %>',
    '<%=frmAlim.FindControl("CALdej1").ClientID %>'));
函数getFloat(uneID){ var d=document.getElementById(uneID); var r=0; 如果(d){//不为空 d=document.getElementById(uneID).value; 如果(d){//未定义 r=parseFloat(d.replace(“,”,”); r=isNaN(r)?0:r; } } 返回r; } 函数makeStruct(名称){ 变量名称=名称。拆分(“”); var count=names.length; 函数构造函数(){
对于(var i=0;i来说,ASP似乎在Span中转换标签。因此,在javascript中,“.value”方法显然不返回Span中的值


改为使用InnerHTML!:)

为什么不创建一个可运行的示例?如果您定义了所有引用的变量,它似乎在这里运行:。您没有说明此代码的用途,因此我不知道您希望它做什么。仅供参考,无需编写特殊代码来“创建结构”在Javascript中。只需将属性分配给对象。不清楚您在这里完成了什么。抱歉,我可能不清楚…我正在ASP.NET中使用大量输入执行一个非常大的表单,因此我希望使用struct maker自动执行大部分代码。没有任何错误,只是所有值都保持在0,我不知道为什么…我编辑了主代码添加一些代码
function getFloat(uneID) {
    var d = document.getElementById(uneID); 
    var r = 0;
    if (d) {//not null
        d = document.getElementById(uneID).value;
        if(d){//not undefined
            r = parseFloat(d.replace(",", "."));
            r = isNaN(r) ? 0 : r;
        }
    }
    return r;
}

function makeStruct(names) {
    var names = names.split(' ');
    var count = names.length;
    function constructor() {
        for (var i=0; i<5; i++) {
            this[names[i]] = arguments[i];
        }
        for (var i = 5; i < count; i++) {
            this[names[i]] = getFloat(arguments[i-4]);
        }
    }
    return constructor;
}

var Aliment = makeStruct("qtt glu pro lip cal gluv prov lipv calv");
var dej = new Aliment('<%=frmAlim.FindControl("QTTdej1").ClientID %>',
    '<%=frmAlim.FindControl("GLUdej1").ClientID %>',
    '<%=frmAlim.FindControl("PROdej1").ClientID %>',
    '<%=frmAlim.FindControl("LIPdej1").ClientID %>',
    '<%=frmAlim.FindControl("CALdej1").ClientID %>'));
dej.qtt = '<%=frmAlim.FindControl("QTTdej1").ClientID %>'
dej.glu = '<%=frmAlim.FindControl("GLUdej1").ClientID %>'
dej.pro = '<%=frmAlim.FindControl("PROdej1").ClientID %>'
dej.lip = '<%=frmAlim.FindControl("LIPdej1").ClientID %>'
dej.cal = '<%=frmAlim.FindControl("CALdej1").ClientID %>'
dej.gluv = getFloat('<%=frmAlim.FindControl("GLUdej1").ClientID %>')
dej.prov = getFloat('<%=frmAlim.FindControl("PROdej1").ClientID %>')
dej.lipv = getFloat('<%=frmAlim.FindControl("LIPdej1").ClientID %>')
dej.calv = getFloat('<%=frmAlim.FindControl("CALdej1").ClientID %>')