2016-07-05 69 views
0

我有一个函数将文本写入html文档。该文本等于两个变量的值,结果等于第三个变量的名称。我怎样才能将这个最终文本转换成一个变量名称以使函数打印出它的值?如何将文本转换为变量名称以使用innerHTML打印其值?

<script> 
 
function start() 
 
{ 
 
var name1 = "name"; 
 
var name2 = 3; 
 
var name3 = "Text that I want to write"; 
 

 
document.getElementById('here').innerHTML = name1 + name2; 
 

 

 
} 
 
</script> 
 

 
<div id="here"></div> 
 

 
<button onclick="start()"> 
 
Start 
 
</button>

UPD:有一个tupo var name1 = "test",它应该是var test1 = "name"

+3

究竟是你想做些什么?我很困惑 –

+1

你需要澄清你的要求。完全不清楚你希望在这里获得什么。到目前为止,您的代码似乎没有明确的错误,除了将name1 + name2更改为name3?或者你是否试图获取另一个名为text3的项目的内容,这里没有显示? * confused * – ManoDestra

+1

对不起,你的意思是“这段文字等于两个变量的值,结果等于第三个变量的名字”。结果是什么”。如果您只想将两个字符串name1和name2添加到变量中,则只需在设置innerHtml值之前将其分配给一个变量即可。例如。 var value1 = name1 + name2; – sethreidnz

回答

3

尝试使用object

<script> 
function start() { 
    var names = { 
    name1: "name", 
    name2: "3", 
    name3: "Text that I want to write" 
    } 

    document.getElementById('here').innerHTML = names[names.name1 + names.name2]; 
} 
</script> 

<div id="here"></div> 
<button onclick="start()">start</button> 
+0

什么?这没有意义 –

+1

它工作!非常感谢你! – Rumata

+0

假设'var name1 =“text”;''var name1 =“name”;' - 这似乎是基于该问题的情况下的错误。 –

1

我假设你的意思是name1等于“name”而不是“text”。然后把它放在一起,你会得到第三个变量,它保存你想要打印的文本的值。在这种情况下,您可以使用javascript的eval()函数。

而不是

document.getElementById('here').innerHTML = name1 + name2; 

使用

document.getElementById('here').innerHTML = eval(name1 + name2); 
+0

谢谢,有一个错字。这种方法在我的情况下不起作用,也许我写错了什么? https://jsfiddle.net/MaximVelichkin/c0s9bkLa/5/ – Rumata

+0

它输出什么? – n3a9

+0

没什么,我添加了一个链接到以前的评论 – Rumata