2017-07-16 5 views
0

だから私は、私はgetId = alert($(obj).attr("id"))で試験したとき

が、それはid値を示し、ポップアップウィンドウにリンクしようとしています。

ですが、getId = $(obj).attr('id')に変更すると、値はundefinedになりました。

これにはどのような解決策がありますか?

// Pop-up window 
 
var windowObject; 
 
var getId; 
 
openPopup(this.id); 
 

 
function openPopup(obj) { 
 
    $(document).ready(function() { 
 
    $('.all').click(function() { 
 
     getId = $(obj).attr('id'); 
 
     //getId = alert($(obj).attr("id")); 
 
    }); 
 
    }); 
 
    windowObject = window.open("slideshow/" + getId + ".html", "popup", width = 800, height = 500 "); 
 
    }

+0

あなたは 'openPopupの(this.id)を呼び出し、'、あなたは基本的にない '$(this.id).ATTR( 'ID')' – adeneo

+1

@アデネオもちろん、もちろん! $( "#" + $(this)).attr( "id"))。first()[0] .id'を実行することを忘れないでください。 –

答えて

1

あなたgetId変数は、あなたのクリックハンドラ関数内で定義されています。そのため、この関数内の警告はうまく動作し(getId = $(obj).attr('id');)、最後のコード文字列(クリックコールバックの外にある)では未定義になります。それはクリックハンドラ関数内で最後の文字列を移動する修正するには:

 function openPopup(obj) { 
     $(document).ready(function() { 
      $('.all').click(function() { 
       getId = $(obj).attr('id'); 
       //getId = alert($(obj).attr("id")); 
       windowObject = window.open("slideshow/" + getId + ".html", "popup", "width=800,height=500"); 
      }); 
     }); 

    } 
+0

魔法のように働く、ありがとう!しかし、まだ理解していない...私はグローバル変数を取得していないのですか? ありがとうございます – Resurrect

+0

実際にはグローバルですが、クリックイベントの後でのみ値を取得します(クリックイベント前にウィンドウを開こうとしました)。したがって、 '.all'をクリックするまで、' getId'変数は定義されません。 –

+0

私が言っていることは、あなたが 'window.open'の前にクリックハンドラを置いても問題ではないということです。このハンドラ内のコードは、クリックするまで実行されませんが、ドキュメントが準備完了したらすぐに最後の文字列が実行されます。 –

関連する問題