2014-08-29 18 views
0

我建設,我會頁面創建使用js的兩個元素,然後有後來在另一個函數訪問它們

var createBtn = function(
    var btn = document.createElement('button') 
    ... 
) 

var createIframe = function(
    var iframe = document.createElement('iframe') 
    ... 
) 

非常基本的東西上創建2個元素一些JS的功能,但後來我想將一個事件監聽器添加到將向iframe應用style屬性的按鈕。

喜歡的東西:

var displayIframe = function(
    Iframe.style['display'] = 'block' 
) 

button.addEventListener('click', displayIframe) 

我的問題是如何訪問元素我已經創造了他們之後,而無需通過附加類,對他們一遍訪問他們這樣的煩惱去。有沒有從一開始就在創建函數中訪問它們的方法。

+1

你應該申報功能外VAR的iframe,然後裏面設置英寸然後你可以用它來改變風格。對不起,我不能寫代碼,我在電話 – 2014-08-29 22:49:32

+0

這是不是不好的練習字符串在全球範圍內的事情? – 2014-08-29 22:50:44

+0

我不應該是全球性的,你應該用一個函數來包圍所有東西,這樣你就可以保持它的範圍 – 2014-08-29 22:52:23

回答

1

你的代碼幾乎是正確的,但還需要一些改變

var btn, iframe;  

var createBtn = function() { 
    btn = document.createElement('button'); 
    ... 
} 

var createIframe = function() { 
    iframe = document.createElement('iframe'); 
    ... 
} 

回調函數

var displayIframe = function(){ 
    iframe.style['display'] = 'block' 
} 

連接點擊收聽

btn.addEventListener('click', displayIframe); 

你的錯誤:

  1. 應聲明btniframe作爲全局變量來對其他功能
  2. 功能與{開始訪問,並與}(結束,)
  3. 到目前爲止,你的代碼是正確的,沒有任何錯誤,但是您不會在頁面上看到任何內容,因爲您沒有將新創建的元素附加到body,爲了完成此功能,請嘗試此功能

function attachToBody(){ 
    document.body.appendChild(btn); 
    document.body.appendChild(iframe); 
} 
0

在你的例子中,我不知道你爲什麼使用函數來創建元素,但你必須有你的觀點。試試這個,讓我知道爲你做這個工作。

//this is equivalent to: var btn = document.createElement('button'); 
var btn = (function(){ 
    var btn = document.createElement('button'); 
    return btn; 
})(); 

var iframe = (function{ 
    var iframe = document.createElement('iframe'); 
    return iframe; 
})(); 

document.getElementById("parentId").appendChild(btn); 
document.getElementById("parentId").appendChild(iframe); 

btn.addEventListener('click', function(){ 
    iframe.style.display = "none"; 
}); 
0
var createBtn = function() { 
    var btn = document.createElement('button') 
    btn.setAttribute("id", "myButton"); 
    return btn; 
} 

var createIframe = function() { 
    var iframe = document.createElement('iframe') 
    iframe.setAttribute("id", "myFrame"); 
    return iframe; 
} 

document.body.appendChild(createBtn()); // Append button to body. 
document.body.appendChild(createIframe()); // Append iFrame to body. 

// Get Elements by Id. 
var myButton = document.getElementById("myButton"); 
var myFrame = document.getElementById("myFrame"); 

// Add event listener. 
myButton.addEventListener("click", function() { 
    myFrame.style.display = "none", false); 
} 
相關問題