传递给数据的未定义变量

Undefined variables passed to data

本文关键字:未定义 变量 数据      更新时间:2023-09-26

在这个代码块中,传递给数据的未定义变量

 var data, expContainerSettings;
 $( this ).hide();
 $( '<span class="placeholder" style="display: none;"></span>' ).insertAfter( this );
 $( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', data );
 $( this ).attr( 'style', 'display: list-item;' );
 data = $.collapsibleTabs.getSettings( $( ele ) );
 if ( data )
 {
   expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
   if ( expContainerSettings )
   {
       expContainerSettings.shifting = false;
       $.collapsibleTabs.handleResize();
   }
 }

这里看起来像是错误

$( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', data );

我该怎么解决这个问题?

在将data变量传递给data方法之前,需要对其设置所需的值。目前,您正在传递undefined,因为您只需声明变量:

var data, expContainerSettings; // <-- Both of these are undefined.

在JavaScript中,在将变量传递给函数后,您无权更改变量的值。

只要没有异步操作发生,解决方案就可以像执行以下行一样简单:

data = $.collapsibleTabs.getSettings( $( ele ) );

执行此行之前:

$( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', data );