在javascript中创建struct
我用我在stackoverflow上找到的一篇帖子创建了我自己的“结构创建者”,但它似乎不起作用,我不明白为什么在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
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 %>')