请帮我一份我正在尝试的表格。
我有一个下拉选择,<中的所有选项选择>有ID,例如:一个选项有id =“hide_me”,其他选项有id =“hide_none”。
以下是我对表单的JS:
<?php
$script = "window.addEvent('domready', function() {
$('recipe').addEvent('change', function(event) {
if ( $('recipe')document.getElementById('hide_it').selected === true ) {
$('hide_me1').setStyle('opacity', '1');
$('hide_me2').setStyle('opacity', '1');
}
});
$('recipe').addEvent('change', function(event) {
if ( $('recipe')document.getElementById('hide_none').selected === true ) {
$('hide_me1').setStyle('opacity', '0');
$('hide_me2').setStyle('opacity', '0');
}
});
});
";
$doc =&JFactory::getDocument();
$doc->addScriptDeclaration( $script );
?>
“recipe”是下拉列表的名称和ID&lt;选择&gt;
目前它正在给我一个像“SyntaxError:Unexpected identifier”这样的JS错误,有人可以帮我这个吗
答案 0 :(得分:2)
你生成的js看起来像这样:
window.addEvent('domready', function() {
$('recipe').addEvent('change', function(event) {
if ($('recipe') document.getElementById('hide_it').selected === true) {
$('hide_me1').setStyle('opacity', '1');
$('hide_me2').setStyle('opacity', '1');
}
});
$('recipe').addEvent('change', function(event) {
if ($('recipe') document.getElementById('hide_none').selected === true) {
$('hide_me1').setStyle('opacity', '0');
$('hide_me2').setStyle('opacity', '0');
}
});
});
如果你使用像jslint / jshint这样的东西,甚至在jsfiddle中粘贴并按下jslint按钮,它会立即报告问题。
但是:
$('recipe') document.getElementById('hide_it').selected === true)
毫无意义。我猜你是想尝试用id hide_it作为食谱的孩子的选项?
这是错误的做法,但这可能是:
$('recipe').getElement('#hide_it').get('selected'); // pointless as by id alone is faster and id is meant to be unique
document.getElement('#receipe #hide_id').get('selected'); // also pointless like above, alt syntax that allows you to combine selectors.
$('hide_it').get('selected'); // works but also wrong, not how you work with selects.
使用mootools获取select
值的正确方法很简单:
$('receip').addEvent('change', function(){
// within this function, this === $('recipe');
var opacity = this.get('value') === 'hide_it' ? 1 : 0;
$$('#hide_me1,#hide_me2').setStyle('opacity', opacity);
// w/o a reference you could do in a single line:
$$('#hide_me1,#hide_me2').setStyle('opacity', +(this.get('value') == 'hide_it'));
});
这仍然有些无效,因为当它们可能是静态时,它会在每个更改事件中查找2个hide_me els。
你也应该停止使用id并根据类进行模式化,id不能很好地扩展。