замена выпадающего меню текстовым меню в javascript

Я пытаюсь заменить раскрывающееся меню текстовым полем, если кто-то выберет вариант «другой». Прямо сейчас в моем коде он заменяет его элементом абзаца, потому что я слишком ленив, чтобы найти точные аргументы конструктора для настройки текстового поля. Однако при выборе «другого» ничего не происходит.

Кто-нибудь знает, что с этим не так?

<html>
<head>
<script type="text/javascript">
function testfunc(arg) {
    if(arg.value == "other") {
        document.thing.replaceChild(document.test, document.thing.selection)
    }
    else {
        alert("stuff")
    }
}
</script>
<body>
<form name="thing">
<select name="selection" onchange="testfunc(document.thing.selection.options[document.thing.selection.selectedIndex])">
<option>yes</option>
<option>no</option>
<option>other</option>
</select>
</form>
<p name="test">lkjsdf</p>
</body>
</html>

person SummerCodin    schedule 11.09.2010    source источник


Ответы (3)


функция должна быть такой! Другое не другое! он чувствителен к регистру (во всяком случае, в Linux ... не уверен насчет других ОС) В противном случае спасибо ... искал этот ... классный способ показать / скрыть

<script type="text/javascript">
function show_txt(arg,arg1)
{
if(document.getElementById(arg).value=='Other')
{
document.getElementById(arg1).style.display="block";
document.getElementById(arg).style.display="none";
}
else
{
document.getElementById(arg).style.display="block";
document.getElementById(arg1).style.display="none";
}
}
</script>
person Stan    schedule 04.02.2011

function show_txt(arg,arg1)
{
if(document.getElementById(arg).value=='other')
{
document.getElementById(arg1).style.display="block";
document.getElementById(arg).style.display="none";
}
else
{
document.getElementById(arg).style.display="block";
document.getElementById(arg1).style.display="none";
}
}

HTML-код здесь:

<select id="arg" onChange="show_txt('arg','arg1');">
<option>yes</option>
<option>No</option>
<option>Other</option>
</select>
<input type="text" id="arg1" style="display:none;">
person Gitesh Dang    schedule 11.09.2010

Эй, я видел твой код, тебе нужна практика,

Вы забыли закрыть тэг. во-вторых, всегда используйте идентификаторы вместо имен. В-третьих, форма не может получить доступ к тегу ‹p›. в-четвертых, вы не можете получить доступ к другим элементам, кроме формы, используя префиксы формы. В-пятых, вы можете создать тег ‹p› динамически или разместить его на странице без отображения. Проверьте мой код. Также это то, что вы можете сделать, чтобы динамически генерировать его.

var newP = document.createElement("p"); var txt = 'lkjsdf'; var newT = document.createTextNode(txt); новыйP.appendChild (новыйT);

<html>
<head></head>
<script type="text/javascript">
function testfunc(arg) {
    if(arg.value == "other") {
        document.thing.removeChild(document.thing.selection);
        document.getElementById('testText').style.display='inline';
    }
    else {
        alert("stuff");
    }
}
</script>
<body>
<form name="thing">
<select name="selection" onchange="testfunc(document.thing.selection.options[document.thing.selection.selectedIndex])">
<option>yes</option>
<option>no</option>
<option>other</option>
</select>
<p id="testText" style="display:none">lkjsdf</p>
</form>
</body>
</html>
person Waqar Alamgir    schedule 18.04.2011