javascript小部件与php构建2d数组


javascript widget withe php build 2d array

我正在尝试构建一个小部件,用户可以在不离开小部件的情况下进行一些计算。

我认为它只能在Javascript中完成,而不能在PHP提交表单中完成,后者将刷新和重定向小部件内的页面。

我用PHP中的sql语句生成一个2d数组并发送到Javascript,Javascript构建表单内容。

比方说,我构建js 2d数组a_larray=[[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.'")';

您通常使用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);