javascript函数调用的问题

时间:2012-02-01 03:13:09

标签: javascript variables yui

我正在使用YUI进度条,但我遇到了一些问题。

通常要更改进度条的值,可以使用: progressBar.set('value', 10000); value是我要改变的地方,10000是我想要改变它的地方。在控制台中,这将返回true

工作正常。但我想传递一个变量作为值: progressBar.set('value', total); 但这对我不起作用,控制台报告false

以下是代码:

这会创建并呈现栏:

var progressBar = new YAHOO.widget.ProgressBar({
                direction: "ttd",
                height: "75px",
                width: "750px",
                anim: true,
                minValue: 0,
                maxValue: 85000,
                value: 35000
            }).render("bar");

            var anim = progressBar.get('anim');
            anim.duration = 3;
            anim.method = YAHOO.util.Easing.bounceBoth;

这是一个ajax请求,用于获取我想设置栏的值:

var itemTotal, mITotal, donationTotal, total;

            function showHint()
            {
            var xmlhttp;
            if (window.XMLHttpRequest)
              {// code for IE7+, Firefox, Chrome, Opera, Safari
              xmlhttp=new XMLHttpRequest();
              }
            else
              {// code for IE6, IE5
              xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
              }
            xmlhttp.onreadystatechange=function()
              {
              if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                var myString = new String(xmlhttp.responseText); 
                var myArray = myString.split(',');
                itemTotal = myArray[0];
                mITotal = myArray[1];
                donationTotal = myArray[2];
                total = myArray[3];

                progressBar.set('value', total);
                alert(total);
                }
              }
            xmlhttp.open("GET","goal_ajax.php",true);
            xmlhttp.send();
            }

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

此:

                var myArray = myString.split(',');
                ...
                total = myArray[3];

不会将total设置为10000(一个数字),而是设置为'10000'(一个字符串)。我敢打赌,如果你要尝试

                progressBar.set('value', '10000');
你会看到同样的问题。要解决此问题,请更改此:

                total = myArray[3];

到此:

                total = +myArray[3];

会将'10000'转换为10000

(免责声明:未经测试。这只是猜测,但猜测一下,我对此非常有信心。)