2016-07-05 3 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: Был var name1 = "test" тупо, он должен быть var test1 = "name"

+3

Что именно вы пытаетесь сделать? Я смущен –

+1

Вам нужно будет уточнить ваши требования. Совершенно непонятно, чего вы надеетесь достичь здесь. Кажется, что с вашим кодом до сих пор нет ничего явно неправильного, за исключением изменения имени1 + 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

Я предполагаю, что вы имели в виду, что имя1 означает «имя» вместо «текст». Затем, соединяя его, вы получите третью переменную, которая содержит значение текста, который вы хотите распечатать. В этом случае вы можете использовать функцию 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