2013-05-07 52 views
0

我一直在尝试下面这个Javascript代码,这将允许我插入不同的变量到HTML取决于点击什么。不幸的是,它不会显示变量的值,而只显示如下定义的变量名称。对Innerhtml的Javascript帮助

<head> 
<script type="text/javascript"> 
var data=new String() 
data="This is what I want to Show" 
function myFunction(text) 
{ 
elem = document.getElementById('replace'); 
elem.innerHTML = text 
} 

</script> 
</head> 

<body> 
<button onclick="myFunction('data')"> Press </button> 

<div id="replace"> 
Test 
</div> 

</body> 
+0

您是否想要将'Test'替换为'button'值'Press'或者其他不同的值。请详细说明。 – 2013-05-07 06:57:01

+0

对不起,按下按钮时,'测试'应替换为'这是我想显示' – user2330961 2013-05-07 06:58:25

+0

替换<按钮onclick = “myFunction(data)”>按 – Agriesean 2013-05-07 07:00:42

回答

0

data连接到全球window对象。要访问它:

elem.innerHTML = window[text]; 

此外,不需要new String()作为字符串可以通过以下方式来定义:

var data = "This is what I want to Show"; 
0

如果“这是你要展示一下”,好把它放在参数,所以,如果有更多的按钮,你可以重复使用的功能:

<button onclick="myFunction('This is what I want to Show')">Press</button> 

DEMO

4

你传递一个字符串,而不是一个变量,使用:

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')" 

或者:不使用在线/生硬的JavaScript

onclick="myFunction(data, document.getElementById('replace'))" 

我也强烈,建议,简单地以便更容易地在一个地方更新要调用的函数,参数和函数本身(而不必遍历文档并找到调用该函数的每个实例):

// 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); 
    }; 
} 
0

这是你的代码..

<button onclick="myFunction('data')"> Press </button> 

因为这里是一个字符串,而不是参考对象 '数据' .. ,所以我想这是你想要的..
1。

<button onclick="myFunction(data)"> Press </button> 


2. <button onclick="myFunction('This is what I want to Show')"> Press </button>

0

您使用的是可变文本指定的值与ID潜水取代。 使用此。

elem.innerHTML = data instead elem.innerHTML = text. 

或者将参数传递给没有单个qoute的函数。