Javascript Switch Case在socialengine中不起作用

时间:2014-02-21 22:24:57

标签: javascript mootools socialengine

我觉得有点尴尬地问这个愚蠢的问题,但不知怎的,下面的代码不起作用。价值(床,房间,地板)是正确的,但开关箱不工作。但相同的开关案例代码片段在jsfiddle中工作得很好。我确定我错过了一些愚蠢的东西。我在启用了mootools的socialengine中使用它/ p>

我还想知道如何获取一个id = roomtype的元素,该元素位于div class=form-elementsid=roomtype不是div class=form-elements的直接子节点的div中。 我可以通过$$('.form-elements #roomtype').get('value')获取它,但这会引用所有带#roomtype的元素,此$('.form-elements #roomtype').get('value')无法正常工作

<script type="text/javascript">
var updatePrice=function()
{

 var room= $$('.form-elements #roomtype').get('value')  ;

// alert (room) gets AirCon or Dorm
var price;

switch (room)
  {
  case "AirCon":
    price="10000"; alert("AirCon");
    break;
  case 'Dorm':
    price="5000"; alert("Dorm");
    break;
  default:
    price="00";
  }


}

 en4.core.runonce.add(updatePrice);// this add this function to DOM Ready
    </script>

1 个答案:

答案 0 :(得分:0)

#1

ID的必须才是唯一的。

在MooTools中,您可以$('roomtype')获取ID为roomtype的元素。

您还可以使用document.id('roomtype')甚至$$('#roomtype') 由于ID必须是唯一的,因此它与该元素的父元素无关,因为只有一个元素。

#2

请注意,$$$不同element methods in mootools$$接受一个CSS选择器并返回一个集合/数组。

$$('#roomtype').get('value'); // returns ['the value']
$('roomtype').get('value'); // return 'the value'

#3

我看到的另一个问题是你在updatePrice()函数范围内定义了价格,所以在开关内做price = 5000无论如何都不会离开函数的范围。您可能希望在函数外部定义var price,或者使函数返回该值:

    // ...
    switch (room) {
        case "AirCon":
            price = "10000";
            alert("AirCon");
            break;
        case 'Dorm':
            price = "5000";
            alert("Dorm");
            break;
        default:
            price = "00";
    }
    return price; // here
}

如果您使用HTML更新小提琴,则可以更轻松地为您提供更多帮助。

P.s:欢迎您提出问题。不需要感到尴尬。