Ошибка конкатенации Javascript при добавлении имени формы с помощью smarty

#javascript #smarty

#javascript #smarty

Вопрос:

Что в этом плохого, я хочу передать значение в поле конкретной формы

 var formid = 'addtaskform{/literal}{$smarty.session.formno}{literal}';
document.formid.title.value = 'yeah';
 

я получаю эту ошибку

 TypeError: document.getElementById(...) is null
 

Ответ №1:

В этом случае нет никаких проблем с конкатенацией. Вероятно, вы делаете что-то еще неправильно.

Посмотрите на следующий пример:

PHP-файл:

 $_SESSION['formno'] = 5;
$smarty->display('test.tpl');
 

Файл шаблона Smarty:

 <input type="text" id="addtaskform5" value="5" />
<script type="text/javascript">
{literal}
var formid = 'addtaskform{/literal}{$smarty.session.formno}{literal}';
document.getElementById(formid).value = 'yeah';
{/literal}
</script>
 

Все работает нормально. Значение ввода изменяется с 5 на yeah

Ответ №2:

Скорее всего, у вас на вашем сайте нет элемента формы с идентификатором formid , по крайней мере, это не то, чего вы на самом деле хотите достичь.

То, что вы ищете, это:

 document[formid].title.value = 'yeah';
 

document.formid (Точечная нотация): получить элемент с идентификатором formid
document[formid] (Скобочная нотация): получить элемент с идентификатором, который хранится в значении formid