Код для определения значения параметра не работает должным образом - PullRequest
0 голосов
/ 20 мая 2011

Я пытался сделать некоторые сравнения строк в JavaScript. Я видел несколько уроков и примеров, но они, похоже, не работают. Мне не хватает чего-то фундаментального?

Попытка 1

function addAspect(aspect) {
    var print = document.createElement('p');
    var ptext;

    if (aspect == "Option1") ptext = document.createTextNode("This is option1");
}

Не работает.

Затем я нашел этот пример, на который все читатели сказали, что он работал нормально

function addAspect() {
    var print = document.createElement('p');
    var ptext;

    var aspect = String(document.getElementById("aspectResult").value);

    if (aspect == "Option1") ptext = document.createTextNode("This is option1");
}

Не работает.

Я также пытался .toString(), а также '===' сравнение с точным соответствием.

Полный код

<html>
    <head>
    <script type="text/javascript">
        function addAspect()
        {
            var print = document.createElement('p');
            var ptext;
            var aspect = document.getElementById("aspectResult").value;
            if (aspect == "Option1"){
                ptext = document.createTextNode("This is option1");
            }
            print.appendChild(ptext);
            document.getElementById("mainBlock").appendChild(print);
        }
        </script>
    </head>
    <body>
        <form>
            <select id="aspectResult">
                <option value="Option1">Option1</option>
            </select>
            <input type="button" value="Check" onclick="addAspect()"/>
        </form>
        <span id="mainBlock">&nbsp</span>
    </body>
</html>

Есть предложения?

Ответы [ 3 ]

1 голос
/ 03 марта 2013

Сначала небольшое введение в работу раскрывающихся списков:

<select id="aspectResult">
    <option value="Option1">Option1</option>
</select>

Чтобы прочитать выбранное значение из раскрывающегося списка, необходимо сделать следующее:

var dropdown = document.getElementById('aspectResult'),
selectedValue = dropdown.options[dropdown.selectedIndex].value;

Затем создайте<p> элемент с текстовым узлом внутри:

var p = document.createElement('p'),
txt;

if (selectedValue == 'Option1') {
    txt = document.createTextNode('This is option 1');
}

После этого вы можете добавить вновь созданный абзац в выбранный вами контейнер:

var container = document.getElementById('mainBlock');

if (txt) {
    p.appendChild(txt);
    container.appendChild(p);
}

Все вместе!

0 голосов
/ 20 мая 2011

Если вы пытаетесь добавить ptext к абзацу, вам нужно добавить две строки в конец:

function addAspect(aspect) {
    var prnt = document.createElement('p');
    var ptext;
    if( aspect == "Option1" ) {
        ptext = document.createTextNode("This is option1");
        prnt.appendChild(ptext); // Add the text to the paragraph
        document.body.appendChild(prnt); // Add the paragraph to the document
    }
}
0 голосов
/ 20 мая 2011

Ваша функция создает текстовый узел, но затем ничего с ним не делает, поэтому вы набираете код , а вообще ничего не делает.Вам нужно добавить текстовый узел к элементу где-то в DOM:

document.body.appendChild(ptext);

Ваш полный код работает нормально в IE9, Firefox 4 и Chrome 11. См. http://jsbin.com/ekura5/.

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