关键是
1.校验 card_name,card_bc,card_page是否存在;这个比较难,先旁观!

解决方案 »

  1.   

    我晕,你要求也太高了吧。。给你个这样的。
    <form name="form_card">
    <input name="card_bc" />
    <input name="card_page" />
    <input name="card_name" />
    <input type="button" onClick="compute('form_card', 'card_name.value=Math.pow((parseInt(card_bc.value)), 2)*100+Math.sqrt(parseInt(card_page.value))')" />
    </form><script type="text/javascript">
    var compute = function (a, b) {
    if ((a = document.forms[a])) {
    try {
    with (a) {
    card_name.value=Math.pow((parseInt(card_bc.value)), 2)*100+Math.sqrt(parseInt(card_page.value))
    eval(b);
    }
    } catch(exp) {}
    } else {
    alert("err");
    }
    };
    </script>
      

  2.   

    昂,错了。。那些都k掉。。
    <script type="text/javascript">
    var compute = function (a, b) {
    if ((a = document.forms[a])) {
    try {
    with (a) {
    eval(b);
    }
    } catch(exp) {}
    }
    };
    </script>
      

  3.   

    1.校验 card_name,card_bc,card_page是否存在;card_name,card_bc,card_page是tag<>这样的标签麽?如果是的话,很简单啊。
      

  4.   

    这个问题关键在于要把四则区分开,哪些是参数对象哪些是符号,
    楼主为什么向这里面钻啊,直接写
    compute(form_card, "card_name.value=Math.pow((parseInt(card_bc.value)), 2)*100+Math.sqrt(parseInt(card_page.value))")
    这样要简单很多
      

  5.   

    card_name,card_bc,card_page都是input控件的名称,也就是
    <input name="card_bc" />
    <input name="card_page" />
    <input name="card_name" />
      

  6.   

    to:hbhbhbhbhb1021(天外水火(我要多努力)) 
    因为我现在正在做程序生成器,如果能有这样的一个东西,我做起来就简单多了,不用我费力生成了
      

  7.   

    检验对象是否存在,只要
    if(!document.getElementById(card_name))
    {
       alert("对象不存在")
    }
      

  8.   

    传入的计算式可以是
    "card_name.value=Math.pow((parseInt(card_bc.value)), 2)*100+Math.sqrt(parseInt(card_page.value))"这种形式也可以是
    "card_name=Math.pow((parseInt(card_bc)), 2)*100+Math.sqrt(parseInt(card_page))"大家怎么方便怎么来,关键是要能通用
    计算出我传入的这个式子,还能校验每一个对象是否存在
      

  9.   

    你这个太灵活了。。不好判断啊。。
    而且我写的那个支持式子变量不固定,但是模式必须要按照我那个来。否则你可以按照你的需要加上那个try的思路重新写一个函数。
      

  10.   

    或者大家有什么好的解决方案也可以提出来,可以不拘泥于我提的形式
    只要能通用计算就可以,最好能校验下每一个input是否存在
      

  11.   

    to:muxrwc
    你的那个办法可以计算出结果,就是没有办法校验是不是每一个input都存在,是不是需要正则表达式啊?
      

  12.   

    <form name="form_card">
    <input name="card_bc" />
    <input name="card_page" />
    <input name="card_bc1" />
    <input name="card_bc2" />
    <input name="card_name" />
    <input type="button" onClick="compute('form_card', 'card_name.value = parseFloat(card_bc.value) + parseFloat(card_page.value) + parseFloat(card_bc1.value) + parseFloat(card_bc2.value) + 1')" />
    </form><script type="text/javascript">
    var compute = function (a, b) {
    if ((a = document.forms[a])) {
    try {
    with (a) {
    eval(b);
    }
    } catch(exp) {}
    }
    };
    </script>
      

  13.   

    验证input是否存在?只要出错就证明有元素不存在啊。
      

  14.   

    to:muxrwc
    你的思路我明白了function compute1(a, b) {
    if ((a=document.forms[a])) {
    try {
    with (a) {
    eval(b);
    }
    } catch(exp) {alert("aaaaaaaa");}
    }else{
    alert("bbbbbbbbbbb");
    }
    }compute1(form_card,"card_name.value=Math.pow((parseInt(card_bc.value)), 2)*100+Math.sqrt(parseInt(card_page.value))")结果总alert("bbbbbbbbbbb");
      

  15.   

    太麻烦了,呵
    而且也得不到值啊
    <script type="text/javascript">
    function compute(){
    var formName=document.getElementsByTagName("form")[0];
    var formula="card_name=Math.pow((parseInt(card_bc)), 2)*100+Math.sqrt(parseInt(card_page))";
    var card_name=formula.split("=")[0];
    var card_bc=formula.split("((parseInt(")[1].split(")),")[0];
    var card_page_=formula.split("t(parseInt(")[1];
    var card_page=card_page_.slice(0,card_page_.indexOf("))"));
      var a=formName.elements;

    if(a[card_name]!=null && a[card_bc]!=null && a[card_page]!=null){
    eval(formula);
    }else{
    alert("error");
    }}</script><form name="myf">
    <input type="text" name="card_name" />
    <input type="text" name="card_bc" />
    <input type="text" name="card_page" />
    <input type="button" value="cumpte" onclick="compute()" />
    </form>
      

  16.   

    我有一个比较繁琐的思路。"card_name=Math.pow((parseInt(card_bc)), 2)*100+Math.sqrt(parseInt(card_page))")首先把 = ( ) , * 等等这些跟运算有关的字符用" "replace掉。
    然后将字符串用" "分割成数组array。
    array[0] = card_name
    array[1] = Math
    .
    .
    .以此类推。
    然后把可能用到的数学函数关键字,比如Math,pow,parseInt,这些放到数组array_math中。
    然后,对数组array得元素进行分析,
    如果在array_math中,不进行是否存在的判断(意味着不是tag),否则进行tag判断。