我正在尝试构建一个小部件,用户可以在不离开小部件的情况下进行一些计算。
我认为它只能在Javascript中完成,而不是PHP提交表单,它将刷新并重定向小部件内的页面。
我从PHP中的sql语句生成一个2d数组并发送到Javascript,Javascript构建表单内容。
说,我建立了js 2d数组a_array = [[q1,w1,e1],[q2,w2,e2],...,[qx,wx,ex]];
如何从javascript构建下拉框html内容?
<select ...>
<option value=w1>q1 -e1</option>
<option value=w2>q2 -e2</option>
...
<option value=wx>qx -ex</option>
</select>
在我的php脚本中,我正在尝试将fm写入javascript,但无法正常工作。
$fm .= '<select name=\"f\" style=\"width:90%\" onchange=\"this.form.submit()\">';
$fm .= 'for (i=0; i<m_array.length; i++){';
$fm .= '\"<option value=\"+m_array[i][0]+\"';
$fm .= 'if (m_array[i][0] == f )';
$fm .= ' selected=\'selected\'';
$fm .= '\">+m_array[$i][0]+\" - \"+m_array[i][2]+\"</option>\"';
$fm .= '}';
$fm .= '</select>';
....
echo 'document.write("'.$fm.'")';
答案 0 :(得分:0)
您通常使用DOM方法document.createElement(tagName)在JavaScript中创建元素,并使用el.appendChild(c)追加。您还可以使用innerHTML创建节点树,如
el.innerHTML = '<p>aaa</p>'
因此,对于您正在做的事情,以下内容可能是合理的:
// Assume `options` is a JavaScript Array as you described, and `form`
// is a <form> element, as in document.forms.the_form_name.
var sel = document.createElement('select'),
el;
for (var i = 0, l = options.length; i < l; i++) {
el = document.createElement('option');
el.value = options[i][1];
el.textContent = options[i][0] + ' -' + options[i][2];
sel.appendChild(el);
}
form.appendChild(sel);