1

所以最近我一直在研究一点点js。

所以,基本上,我的问题是我需要隐藏参数中传递的任何内容,或者如果它已经隐藏则显示它。

这是我的代码:

<script type='text/javascript'>
<!--
function toggleReport(table){
//the table argument is the table's id
alert(table);                    //to check that the name of the table is right
if($('#table').is(':visible')){ //check if visible
    $('#table').hide();     //if so, hide it
    alert('hide');          //send a message that it is now being hidden
}else{                          //if already hidden
alert('show');                  //send a message that it is now being shown
$('#table').show();             //show the table
}

}
//-->
</script>

但是,它不起作用....它正在发送警报,一切都是正确的,但是,它不会隐藏或显示表格....

但是,如果我尝试这样做:

<script type='text/javascript'>
<!--
function toggleReport(){
//removed the argument
alert('table_1');
if($('#table_1').is(':visible')){
    $('#table_1').hide();
    alert('hide');
}else{
alert('show');
$('#table_1').show();
}

}
//-->
</script>

有用!为什么会这样?因为我将在网站上有很多表格和其他需要隐藏和显示的东西,我不想为每个表格创建一个新功能..:/

请帮我!

谢谢!!

4

6 回答 6

2

非常简单地使用toggle()代替 show()/hide(),toggle()使元素在隐藏时可见,如果元素可见则隐藏。

<script type='text/javascript'>;
function toggleReport(element_ID){
$("#"+element_ID).toggle();
}
</script>

如果您想对元素 ID 进行硬编码,而不是使用以下脚本

<script type='text/javascript'>
function toggleReport(){
$("#table_1").toggle();
}
</script>

干杯,别忘了给我的答案投票:)

于 2012-05-25T05:26:33.577 回答
1

如果要传入元素引用,请将其用作选择器:

function toggleReport(table){
    $(table).toggle();
}

请注意,我正在使用.toggle(),它将完全按照您尝试手动执行的操作。如果你想记录新的状态,你可以在回调中这样做:

function toggleReport( table ) {
    $( table ).toggle('fast', function(){
        console.log( "Element is visible? " + $(this).is(":visible") );
    });
}

请注意,如果您传入元素的 ID,则需要修改选择器:

$( "#" + table ).toggle();
于 2012-05-25T05:18:10.007 回答
1

为此,有一个预建的 Jquery 函数。

于 2012-05-25T05:18:52.283 回答
0

您可以使用切换功能来实现这一点....

$(selector).toggle();
于 2012-05-25T05:19:55.017 回答
0

演示 http://jsfiddle.net/uW3cN/2/

带有参数的演示 http://jsfiddle.net/uW3cN/3/

良好的阅读 API 切换:http ://api.jquery.com/toggle/

代码

function toggleReport(){
//removed the argument
$('#table_1').toggle();

}

​<strong>另一个示例 html 在这里http://jsfiddle.net/uW3cN/3/

function toggleReport(tableid){
//removed the argument
$('#'+tableid).toggle();

}

​</p>

于 2012-05-25T05:24:11.080 回答
0

您在原始函数中犯的错误是您实际上没有使用传递给函数的参数。您选择"#table"的只是选择页面上 ID 为“table”的元素。它根本没有引用您的变量。

如果您打算将 ID 传递给选择器,则应编写jQuery("#" + table). 如果 table 是对 DOM 元素的引用,您将编写jQuery(table)(没有引号和井号)。

于 2012-05-25T06:12:54.160 回答