全局变量和innerHTML

时间:2014-02-16 06:55:54

标签: javascript innerhtml

我试图从我的数组中获取一个随机名称,以便在单击按钮后显示。在控制台中,我得到“Uncaught ReferenceError:arry is not defined”,我认为这是因为arry不是全局变量。我该如何解决这种情况?

jsbin

var randomName = function() {
  arry = ["Kevin", "John", "Mabel", "Lucy", "Isabella", "Ryan", "Clyde"];
    var random = arry[Math.round(Math.random() * arry.length)];
    return random;
};

// create button
var button = document.createElement("input");
var id = "btn";
  button.type = "submit";
  button.value = "click me!";
  button.setAttribute("id", "btn");

document.body.appendChild(button);

// initialize function
window.onload = function() {
// add event listener
  document.getElementById("btn").addEventListener("click", function(e) {
    document.getElementById("name").innerHTML = arry[0].random;
     console.log("hi");
    }   
  );
};

2 个答案:

答案 0 :(得分:2)

更改此行:

document.getElementById("name").innerHTML = arry[0].random;

到此:

document.getElementById("name").innerHTML = randomName();

工作演示:http://jsbin.com/xugeg/1

您创建了函数randomName()以从数组中获取随机值,您只需要调用它。

arry[0].random;错误,因为arry[0]是一个字符串,并且没有名为random的属性。

答案 1 :(得分:1)

为什么不使用现有的randomName()功能?

只需更换此行

即可
document.getElementById("name").innerHTML = arry[0].random;

document.getElementById("name").innerHTML = randomName();