Javascript "undefined" выходной вопрос - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть весь этот код, который создает новые div и добавляет innerHTML. В рамках этого я хочу добавить выпадающие сгенерированные из файла XML. У меня проблема с динамическим созданием тегов внутри inner.HTML.

Теперь все это динамично, и пользователь должен добавлять новые элементы по мере необходимости. Итак, в качестве обходного пути, у меня есть куча значений var, которые обрабатываются вместе друг с другом, поэтому вещи соответствуют одним и тем же идентификаторам.

var opselectCounterA = '1';
var opselectCounterB = '1';
var selectCounter = '1';

Тег, который я хочу добавить, также находится внутри inner.HTML.

something.innerHTML = "<select id='partSelect" + (selectCounter++) + "'>" + (loadOp) + "</select>";

var selectIDA = "partSelect" + opselectCounterA++;
var selectIDB = "partSelect" + opselectCounterB++;
var loadOp = selectIDA.addOption();

function addOption(){

    selectIDB.innerHTML = "<option>Please work.</option>";

}

Всякий раз, когда это происходит на моей HTML-странице, оно отображается между тегами как «неопределенное».

Зачем?

1 Ответ

2 голосов
/ 17 февраля 2012

В вашем коде немало неправильных вещей (хотя я вижу только его часть).

Относительно строки var loadOp = selectIDA.addOption(); ...

  1. Когда эта строка выполняется, javascript пытается выполнить функцию с именем addOption(), которая существует в объекте selectIDA.Однако переменная selectIDA на самом деле является строкой, которая не имеет функции addOption().Поскольку javascript не находит функцию с именем addOption() в объекте selectIDA, он устанавливает значение loadOp равным undefined.
  2. Кроме того, даже если вы вместо этого написали var loadOp = addOption();, значениеиз loadOp все равно будет неопределенным, поскольку addOption() не возвращает никаких значений.

Возможно, вам следует попробовать что-то еще в этом направлении ...

// Function takes a select element and some text as args
// then adds option elements to the select
function addOption(select, optionText) {
  var option = document.createElement("option");
  option.innerText = optionText;
  select.appendChild(option);
}


var opselectCounterA = 1;
opselectCounterA++;

var selectIDA = "partSelect" + opselectCounterA;

// Create the select element
var selectA = document.createElement("select");
selectA.setAttribute("id", selectIDA);

// Add options to that select element
addOption(selectA, "My First Option");
addOption(selectA, "My Second Option");
addOption(selectA, "My Third Option");

// Add the select element to the body
document.body.appendChild(selectA);​

Просмотр рабочего примера на jsFiddle: http://jsfiddle.net/Nxezs/

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