我觉得有点尴尬地问这个愚蠢的问题,但不知怎的,下面的代码不起作用。价值(床,房间,地板)是正确的,但开关箱不工作。但相同的开关案例代码片段在jsfiddle中工作得很好。我确定我错过了一些愚蠢的东西。我在启用了mootools的socialengine中使用它/ p>
我还想知道如何获取一个id = roomtype的元素,该元素位于div class=form-elements
但id=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>
答案 0 :(得分:0)
ID的必须才是唯一的。
在MooTools中,您可以$('roomtype')
获取ID为roomtype
的元素。
您还可以使用document.id('roomtype')
甚至$$('#roomtype')
由于ID必须是唯一的,因此它与该元素的父元素无关,因为只有一个元素。
请注意,$
和$$
不同element methods in mootools。 $$
接受一个CSS选择器并返回一个集合/数组。
$$('#roomtype').get('value'); // returns ['the value']
$('roomtype').get('value'); // return 'the value'
我看到的另一个问题是你在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:欢迎您提出问题。不需要感到尴尬。