您传递的是字符串,而不是变量,请使用:
onclick="myFunction(data)"
字符串必须被引用,变量(在这种情况下是对字符串的引用)不能(否则它将被评估为文字字符串)。
顺便说一句,JavaScript 不要求您在为其分配值之前显式创建字符串,您可以只使用:
var data = 'This is what I want to show.';
在使用innerHTML
作品时,如果您所做的只是更新文本内容(并且没有要考虑的嵌套节点),您可以简单地使用:
function myFunction(text) {
// the var declaration prevents the variable becoming global
var elem = document.getElementById('replace');
elem.appendChild(document.createTextNode(text));
}
并且为了使它更普遍有用,避免硬编码id
元素的在函数内改变,而是将它传递给函数:
function myFunction(text, elem) {
// testing if the element is a node, if not assume it's a string of the id:
var elem = elem.nodeType === 1 ? elem : document.getElementById('replace');
elem.appendChild(document.createTextNode(text));
}
并将上述内容与:
onclick="myFunction(data, 'replace')"
或者:
onclick="myFunction(data, document.getElementById('replace'))"
我还强烈建议不要使用内联/突兀的 JavaScript,只是为了更容易在一个地方更新要调用的函数、参数和函数本身(而不是必须浏览文档和找到调用函数的每个实例):
// define the function here
var buttons = document.getElementsByTagName('button'),
replace = document.getElementById('replace'),
data = 'Text I want to show.';
for (var i = 0, len = buttons.length; i < len; i++){
buttons[i].onclick = function(){
myFunction(data, replace);
};
}