LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1981|回复: 1

javascript调用动态生成html控件名出错

[复制链接]
发表于 2008-2-29 12:33:16 | 显示全部楼层 |阅读模式
javascript 函数中调用文本框控件“text1.value”这个控件名是用php 动态生成的(如text0, text1, text2 等等),text1.value的值是javascript生成的,可是一调用出来是:undefined。为什么呢

当尝试读取不存在的对象属性时也会返回 undefined。

调用是在另一个javascript 函数中调用 text1.value


    aname = "text"+ j;
   alert(aname);
   alert(eval(aname.value)); //这样写显示 undefined
   alert(aname.value); //这样写显示 undefined
------------------------------------
[PHP]

那,向你请教一问题,我用php动态生成一列文本框,
其名字是:amount0, amount1, amount2...等等,个数不定,有点像购物车似的
我想求这个列的求和,就是总价格似的,有什么办法呢。
我现在用javascript 求,但是用 eval 函数时,总出错。
wide288 14:19:09
var sum = 0;
function subtotal1(i, name) {
// i 是列表个数,name 是求和值显示的控件名
  var j=0;
  for(j=0;j<=i;j++) {
    eval("var aname = amount" + j);
        sum += aname.value;
  }
  return name.value = sum;
}
这是我写的函数
wide288 14:20:17
上面
    eval("var aname = amount" + j);
        sum += aname.value;
这两行不能工作。
[/PHP]

我这里遇到二个问题,一是 eval 感觉这个函数没有正常工作。
二是,aname 还是字符串类型,不是控件对象

不过没有想到办法解决
发表于 2008-3-28 03:31:15 | 显示全部楼层
1. eval 格式上应该没有问题,但你把aname放在eval里面,后面的aname没有定义,你后面如何引用它?(估计会出现undefined的错误或出现不一致的两个变量)

2.你说的控件到底指什么? 是windows组件,还是CLASS呢, 如果是前者,则须用document.creatElement 方法来创建组件对象;如果是后者,则使用 aname = function(){
   this.avalue  = '';
}
来创建.

另:
使用"name" 作变量,会与window对象混淆, 换用其他的名字比较好,如name1.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表