在javascript中创建结构

时间:2016-04-08 19:55:52

标签: javascript

我使用了在stackoverflow上找到的帖子来创建我自己的" struct creator",但它似乎不起作用,我不明白为什么......

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;
}

以下是解释:我有9个值:第一个是ID 接下来的4是最后4个ID中的值。 这是我想做的事例:

var A = makeStruct("a b c d e b_value c_value d_value e_value");
var B = new A(id1, id2, id3, id4, id5);

所以B可以将5 ID和id2的值存储到id5 ......但它什么都不做:(

我知道这很简单,但我在javascript中并不是很好......

谢谢!

EDIt:添加一些代码

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 %>'));

我想要变量&#34; dej&#34;那样:

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 %>')

我的问题是所有的dej。* v都等于0

1 个答案:

答案 0 :(得分:0)

好吧,似乎ASP在Span中变成了标签。显然,在javascript中,&#34; .value&#34;方法不会返回跨度中的值。

使用InnerHTML代替! :)