2013-05-28 4 views
-1

У меня есть JS в HTML-шаблоне. Как я могу синтаксически вычислить некоторое значение, сохранить его в переменной, а затем использовать его как идентификатор элемента? Сейчас это не работает. Может ли кто-нибудь помочь мне выяснить, что я делаю неправильно?Javascript - динамическое создание идентификатора для элемента -

if (key == "down"){ 
    var tri_id = "triangle" + status_JSON['down'][1]; 
    document.getElementById(tri_id).innerHTML = "<img class='voting' src='images/vote_grey.png'></img>"; 
    document.getElementById(status_JSON['down'][1]).innerHTML = status_JSON["down"][0]; 
} 

DOM является:

<script type="text/javascript"> 
var triangle_id = "triangle" + "{{each[1].key()}}"; 
</script> 
<div class='votes_div'> 
    <table id="votes_table"> 
    <tr> 
     <td> 
      <a href='javascript:registerVote("{{each[1].key()}}")'> 
       <span id=triangle_id title='vote if you think this review is helpful'><img class='voting' src='../../../../images/vote_grey.png'></img></span> 
      </a> 
     </td> 
    </tr> 

К сожалению я новичок!

+1

'document.getElementById (tri_id)' ** (без кавычек) ** будет работать, но только если есть на самом деле элемент с таким идентификатором уже в DOM , –

+0

Я пробовал без кавычек, и он по-прежнему не работает - и да, этот идентификатор уже находится в dom - я продолжаю получать ошибку: Uncaught TypeError: Невозможно установить свойство innerHTML нулевого – user1769203

+1

Тогда либо вы ошибаетесь , и нет элемента с этим идентификатором, или этот код работает до того, как DOM будет готов. Как насчет [SSCCE] (http://sscce.org), который воспроизводит проблему? Есть много инструментов, которые помогут вам создать один из них: http://jsfiddle.net, http://jsbin.com, http://codepen.io и т. Д. –

ответ

2

HTML не имеет никакого доступа к среде JavaScript. Так что это не будет работать, как вы ожидаете:

<script type="text/javascript"> 
var triangle_id = "triangle1234" 
</script> 
<span id=triangle_id> 

Пролет тег будет иметь идентификатор «triangle_id» (в буквальном смысле), а не «triangle1234».

Похоже, вы используете какой-то язык для вставки динамического числа в HTML. Вы должны будете сделать это непосредственно в теге:

<span id="triangle{{each[1].key()}}"> 
+0

вот что я подозревал, когда писал, --- круто - не знал, что вы могли бы это сделать - спасибо! – user1769203

2

Код:

document.getElementById("tri_id") 

Будет ли на самом деле искать DOM элемента называетсяtri_id. Чтобы использовать значение переменной, используйте:

document.getElementById(tri_id) 
+0

Это ответ –

+0

Джентльмены, читайте комментарии к OP. –

Смежные вопросы