JavaScript,jQuery,XML - if语句由于未知原因而未执行

时间:2010-06-03 13:34:02

标签: javascript jquery xml

我有一个'for'循环,它从XML文档中提取数据并将其添加到一些JavaScript对象中,每次循环执行时我希望它根据属性“typ”的值运行某个函数,这是从xml中检索。

目前,XML中的数据已成功解析,这可以通过您可以看到的第一个产生正确值的“警报”来证明。

然而,'if'语句中的'alert'行都没有被执行,因此我无法测试应该被调用的'ctyp3'函数。

我哪里出错?

                      for (j=0; j<arrayIds.length; j++)
                  { 
                    $(xml).find("C[ID='" + arrayIds[j] + "']").each(function(){
                        // pass values
                        questions[j] = {
                            typ: $(this).attr('typ'),
                            width: $(this).find("I").attr('wid'),
                            height: $(this).find("I").attr('hei'),
                            x: $(this).find("I").attr('x'),
                            y: $(this).find("I").attr('x'),
                            baC: $(this).find("I").attr('baC'),
                            boC: $(this).find("I").attr('boC'),
                            boW: $(this).find("I").attr('boW')
                        }

                        alert($(this).attr('typ'));

                        if ($(this).attr('typ') == '3')
                        {
                            ctyp3(x,y,width,height,baC);
                            alert('pass');
                        } else {
                            // Add here
                            alert('fail');
                        }
                    });
                  }

编辑:在你的建议之后我评论了ctyp3函数,if语句继续正确执行。

这是ctyp3函数:

                      function ctyp3(x,y,width,height,baC)
                  {
                      alert('alsdjkfs');
                      document.createElement('rect');
                      this.x = x;
                      this.y = y;
                      this.width = width;
                      this.height = height;
                      this.fillcolor = baC;
                      svgTag.appendChild(this);
                  }

我试图创建一个对象,然后是一个html元素,这是我之前没有做过的事情。

1 个答案:

答案 0 :(得分:2)

ctyp3函数中的“this”不会是您认为的那样。您需要将document.createElement的结果分配给变量:

var r = document.createElement('rect');

然后使用“r”代替“this”。同样,还不清楚“svgTag”是什么;如果它不是一个全局变量,那么你将不得不明确地将它传递给函数。