1

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

我遇到的问题是我无法将下拉列表放在 innerHTML 代码中。

这是我写的用 JS 创建下拉列表的内容:

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 代码,我使用:

newdiv.innerHTML = '<div class="table">.........</div>';
ni.appendChild(newdiv);

这是 HTML 的一部分:

// test dropdown list
<input name="testcat" id="testcat" type="hidden" value="0" />   
<div id="myDiv"></div>

正如您在上面的代码中看到的那样,我测试了我的下拉列表,如果我<input name="testcat" id="testcat" type="hidden" value="0" />在 HTML 中声明(我的意思是<body></body>在myLine.value++;"。

有什么帮助吗?

4

2 回答 2

0

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

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");

和使用的:

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 数据库中获取值。

所以我创建了这个函数:

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 中使用。对不起,愚蠢的问题,但我真的被困在这里。

于 2012-06-21T12:00:26.773 回答
0

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

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

var input = document.createElement("input"); 
input.id="testcat"; 
input.innerHTML = "testcat" ;
$('somediv').appendChild(input); 
于 2012-06-21T11:17:12.707 回答