2016-02-01 34 views
1

我有一個外部JavaScript旨在替換我網站上的某些字詞。爲了保持高效,每個頁面都會加載相同的外部腳本,因此如果需要進行任何更改,我可以簡單地編輯單個文件。這是我使用的代碼示例:如何允許document.getElementById找不到ID?

document.getElementById("ey").innerHTML = 'AY' 
document.getElementById("ny").innerHTML = 'BY' 
document.getElementById("gy").innerHTML = 'CY' 

然而,我發現,如果一個頁面包含一個元素(比如,「GY」),但不是另一個(「NY」),那麼,腳本無法正確執行。我有一長串這些變化(50ish),所以我很想讓它工作。

任何想法如何讓代碼提供沒有找到特定ID的津貼?

+0

不設置屬性或東西,可能不存在通話功能。檢查它們是否存在,如果它們存在則調用,如果不存在則跳過。否則,你的腳本會做一些違法的事情,並且它的運行會被終止,不管壞線是多麼完美的代碼。 –

+0

@LilligantEX頁面上需要更改的元素有哪些不同類型? – pratikpawar

回答

2
setInnerHTML('ey', 'AY'); 
setInnerHTML('ny', 'BY'); 

...etc etc 

function setInnerHTML(elementId, innerHTML) { 
    var el = document.getElementById(elementId); 

    if (el) { 
     el.innerHTML = innerHTML; 
    } 
} 
+0

太好了。謝謝! – StarDart

2

很好,你可以寫類似

var el = document.getElementById("MY-ID") 
if (el) 
    el.innerHTML = 'MY VALUE' 

一個很好的解決方案是一種方法來包裝這個,像這樣:

function setValue(id, value){ 
    var el = document.getElementById(id) 
    if (el) 
    el.innerHTML = value 
} 

然後調用它像:

setValue('ey', 'AY') 
setValue('ny', 'BY') 

等等

+0

也是一個很好的答案。謝謝! – StarDart

2

你總是可以爲此做一個小結構。

(function(){ 
    var defaultChanges = { 
     'ey' : 'AY', 
     'ny': 'BY', 
     'gy' : 'CY' 
    }; 
    for(var id in defaultChanges){ 
     var el = document.querySelector("#"+id); 
     if(el) el.innerHTML = defaultChanges[id]; 
    } 
})() 

通過這種方式,您所需要做的就是更改您的對象,並且整個集合將在頁面中更改。

+0

我比我的回答更喜歡這個;) –

0

如果沒有找到,使用一個虛擬對象:

(document.getElementById("ey") || {innerHTML:''}).innerHTML = 'AY' 
(document.getElementById("ny") || {innerHTML:''}).innerHTML = 'BY' 
(document.getElementById("gy") || {innerHTML:''}).innerHTML = 'CY' 
相關問題