问这个愚蠢的问题让我有些尴尬,但是以下代码无法正常工作。正确获取了值(bed,room,floor),但开关案例不起作用。但是在jsfiddle中,相同的代码段案例在jsfiddle中效果很好。我肯定我错过了一些愚蠢的东西。
我还想知道如何获取具有id = roomtype且位于div中的元素,该元素的class=form-elements
但id=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更新小提琴,则可以为您提供更多帮助。
附注:总是欢迎您提出问题。无需感到尴尬。