2017-07-16 115 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( '身份證')' – adeneo

+1

@ adeneo但當然!不要忘記然後執行'$(「#」+ $(this).attr(「id」))。first()[0] .id'來確保你得到這個東西的ID! –

回答

1

getId變量是你的點擊處理函數裏面只定義了。這就是爲什麼在這個函數內部的alert可以正常工作(以及getId = $(obj).attr('id');),但是在最後一串代碼中(在單擊回調之外)未定義。要修復它移動click處理函數中最後一個字符串:

 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

像魔術一樣工作,謝謝!但仍然不明白......我沒有讓getId成爲全局變量嗎? 非常感謝 – Resurrect

+0

它確實是全球性的,但它只在點擊事件後才獲得價值(並且您嘗試在點擊事件之前打開窗口)。所以,直到你點擊了'.all',getId變量纔會被定義。 –

+0

我想說的是,在window.open之前放置點擊處理程序並不重要。只有單擊後,此處理程序中的代碼纔會執行​​,但最後一個字符串在文檔準備就緒時執行。 –

相關問題