如何允许document.getElementById找不到ID?

时间:2016-02-01 23:36:52

标签: javascript

我有一个外部JavaScript,旨在替换我网站上的某些字词。为了保持高效,每个页面都会加载相同的外部脚本,因此如果需要进行任何更改,我只需编辑单个文件即可。这是我使用的代码示例:

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

但是,我发现如果一个页面包含一个元素(例如" gy")而不包含另一个元素(" ny"),则脚本无法正确执行。我有很多这些变化(50ish),所以我很乐意让它发挥作用。

我知道如何让代码为未找到特定ID提供补贴吗?

4 个答案:

答案 0 :(得分: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')

等等

答案 1 :(得分:2)

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

...etc etc

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

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

答案 2 :(得分: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];
    }
})()

这样你需要做的就是改变你的对象,并在页面中更改整个集合。

答案 3 :(得分:0)

如果未找到,请使用虚拟对象:

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