Невозможно объединить строку + переменную + строку в JavaScript - PullRequest
1 голос
/ 09 января 2012

Я пытаюсь динамически заставить мой javascript искать идентификатор элемента в DOM.

В настоящее время я использую это

var string = "retail";
document.getElementById('markup_'+string+'_percentage').value=z.toFixed(2)+"%";

Где переменная "строка" имеет значение наподобие "retail"

Я думал, что это даст объединенную строку "markup_retail_percentage".

Однако на самом деле это выдает сообщение об ошибке:

document.getElementById("markup_"+string+"_percentage") is null

Я пробовал также использовать "."и операторы *.

Один из моих html-элементов

<input type="text" id="markup_retail_percentage" size="5" name="markup_retail_percentage" value="" readonly />

РЕШЕНИЕ !!!!

//using a new variable name to be passed to function 
function percentage(elementid)
{

    elementid = "markup_" + elementid;
    elementid = elementid + "_percentage";

document.getElementById(elementid).value = "a value";


}

Ответы [ 4 ]

5 голосов
/ 09 января 2012

Я вижу два ^ три, четыре ^ ш четыре варианта:

  1. string не содержит того, что вы думаете,
  2. Вы должны иметь подчеркивание до percentage.
  3. указанный элемент действительно не существует! (спасибо @jAndy)
  4. да, но DOM еще не готов (спасибо @Yoshi)
2 голосов
/ 09 января 2012

Похоже, вам не хватает знака подчеркивания перед процентом

document.getElementById('markup_'+ string +'percentage')

Я думаю, вы хотите

document.getElementById('markup_'+ string +'_percentage')

1 голос
/ 09 января 2012

Если вы запустите этот код до окончания загрузки Document, ваша разметка не будет проанализирована полностью, и Element с таким идентификатором не будет доступен с помощью методов DOM.

0 голосов
/ 10 января 2012

Решение:

function percentage(elementid)
{

    elementid = "markup_" + elementid;
    elementid = elementid + "_percentage";

document.getElementById(elementid).value = "a value";


}

Я не знаю, почему он работает:

-Может быть проблема конкатенации, нельзя использовать несколько операторов "+"?

-Изменить имя переменной?

Но теперь он работает, так что спасибо всем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...