首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >innerHTML中的<input></input>不工作

innerHTML中的<input></input>不工作
EN

Stack Overflow用户
提问于 2012-06-21 18:38:56
回答 2查看 987关注 0票数 1

我用javascript创建了一个下拉列表,并从MySQL数据库获取数据填充到下拉列表中。

我遇到的问题是我不能把下拉列表放在innerHTML代码中。

这是我为用JS创建下拉列表而写的:

代码语言:javascript
复制
var mySpan = document.getElementById('myDiv');

var myLine = document.getElementById('testcat');
myLine.value++;

// Create select
var selection = document.createElement('select');
selection.setAttribute('name',"category[]");
mySpan.appendChild(selection); 

// Create Option
createSelectOption(selection);

// Create the container
var ni = document.getElementById('myDiv');
ni.setAttribute('style', 'width:790px;');
...........
...........

然后我创建其他东西,并创建HTML代码,我使用:

代码语言:javascript
复制
newdiv.innerHTML = '<div class="table">.........</div>';
ni.appendChild(newdiv);

这是HTML的一部分:

代码语言:javascript
复制
// test dropdown list
<input name="testcat" id="testcat" type="hidden" value="0" />   
<div id="myDiv"></div>

我测试了我的下拉列表,你可以在上面的代码中看到,如果我在HTML中声明<input name="testcat" id="testcat" type="hidden" value="0" /> (我是指在<body></body>中),它就可以工作,但是如果我在innerHTML中使用相同的代码,FireBug会告诉我:"myLine is null;myLine.value++;“。

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-21 19:17:13

不能使用innerHTML作为文本为元素分配ID - ID不会在DOM上注册。您需要首先创建元素,为其分配ID,然后将该元素放入DOM中。

您可能会发现使用jQuery会更容易:

代码语言:javascript
复制
var input = document.createElement("input"); 
input.id="testcat"; 
input.innerHTML = "testcat" ;
$('somediv').appendChild(input); 
票数 0
EN

Stack Overflow用户

发布于 2012-06-21 20:00:27

这是我在我的旧代码中所做的:

代码语言:javascript
复制
var selectcat = document.createElement("select");
selectcat.name = "category[]";
selectcat.options[0] = new Option("","");
selectcat.options[1] = new Option("cat1","cat1");
selectcat.options[2] = new Option("cat2","cat2");
..........
..........
selectcat.options[12] = new Option("cat1","cat12");

和使用的:

代码语言:javascript
复制
newdiv.innerHTML = '<div class="table"><ul><li><select name="category[]"><option value=""></option><option value="cat1">cat1</option><option value="cat2">cat2</option></select></li></ul></div>';

但是现在我必须从MySQL数据库中获取这些值。

所以我创建了这个函数:

代码语言:javascript
复制
function createSelectOption(element)
    {
        var objSelect = ele;
        var Item = new Option("", "");
        objSelect.options[objSelect.length] = Item;
        <?
        while($categ = mysql_fetch_array($resultf_categ))
        {
        ?>
            var Item = new Option("<?=$categ["cat_name"];?>", "<?=$categ["cat_name"];?>");
            objSelect.options[objSelect.length] = Item;
        <?
        }
        ?>
    }

但是仍然不明白如何在我的innerHTML中直接使用。很抱歉问了这么多愚蠢的问题,但我真的被困在这里了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11136339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档