问这个愚蠢的问题让我有些尴尬,但是以下代码无法正常工作。正确获取了值(bed,room,floor),但开关案例不起作用。但是在jsfiddle中,相同的代码段案例在jsfiddle中效果很好。我肯定我错过了一些愚蠢的东西。

我还想知道如何获取具有id = roomtype且位于div中的元素,该元素的class=form-elementsid=roomtype不是div class=form-elements的直接子代。
我可以通过$$('.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

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价格,或使函数返回该值位于以下位置:

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


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

附注:总是欢迎您提出问题。无需感到尴尬。

10-02 15:17