首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

为什么不运行if里的语句呢?解决思路

2012-03-19 
为什么不运行if里的语句呢?读取xml文件里的一个值,trace了一下,报的值就是0,但是就是不运行if里面的语句.

为什么不运行if里的语句呢?
读取xml文件里的一个值,trace了一下,报的值就是0,但是就是不运行if里面的语句.郁闷了,请大家帮帮忙~~~
function   btn_show(p)   {
                var   _loc3   =   _root.xml_object.firstChild;
                isSale   =   _loc3.childNodes[p].childNodes[4].childNodes[3].childNodes;
                trace( "isSale= "+isSale);
                if   (isSale   ==   undifined   ||   isSale   == " "   ||   isSale== "0 ")   {
                        _root.btn1.enabled   =   false;
                        _root.btn1._visible   =   false;
                }
        }

好象是类型上的错误,isSale里保存的不是数字类型的,我用
trace( "isSale= "+isSale+2);输出的是02或是12,不知道怎么才能好,请大家帮忙

[解决办法]
isSale = _loc3.childNodes[p].childNodes[4].childNodes[3].childNodes;
注意这个, 这个得到的并不是一个基本类型,你可以
trace( "type : "+(typeof isSale));
看看它是什么类型。是个Object

可以仔细了解一下DOM模型以及里面的一些知识。

另外
isSale = _loc3.childNodes[p].childNodes[4].childNodes[3].childNodesfirstChild.nodeValue.toString();

这样解析XML是很复杂的。
有个老外写了个XMLObject类, 很好用。搜一下这个类,应该可以找到的。


得到的应该是一个
Array.
不知道你的XML的具体格式。所以不知道怎么说。
我想你应该这样写
isSale = _loc3.childNodes[p].childNodes[4].childNodes[3].;



[解决办法]
通过parseFloat()或者parseInt()函数可以将字符串类型转换成浮点型或者整型,你试一试
[解决办法]
他不是因为
”parseFloat()或者parseInt()函数“
的原因,AS会自动转。
比如
var s = "1 ";
trace(s==1);会是true
前提是你不要强制S的类型。
根本原因可能是isSale 本身就是 '0 '
那if也是不会执行了。
我一般喜欢
toString()一次

热点排行