使用PHP通过Javascript选择选项值

时间:2011-11-28 18:32:14

标签: php javascript

好的,这是我的代码。我正在尝试使用Javascript从PHP中选择一个选项列表值(我不希望用PHP直接执行此方法,因为这对我的特定程序不起作用)

以下是代码:

ECHO '<script type="text/javascript">
    var pl = document.getElementById("cultpicklist");
 pl.options[37].selected = true;
 </script>';

然而,当我尝试运行它时,它似乎不起作用,它说pl.options [37]是未定义的。

我做错了什么?

注意,有一个多选列表,其选项的值为37。

编辑:我似乎收到此错误或警告消息:

Element referenced by ID/NAME in the global scope. Use W3C standard document.getElementById() instead.
admin.php?org=7()admin.php?org=7 (line 68)
pl.options[37].selected = true;

以下是相关的HTML:

<fieldset><label for="culture">Culture:</label>
        <select name="culture[]" multiple="multiple" id="cultpicklist"><?php
    while ($cultrow = mysql_fetch_array($rescult)) {
        ECHO '<option name="culture[]" value="'. stripslashes($cultrow['cult_id']) .'">'. stripslashes($cultrow['cult_desc']) .'</option>';
    }
    ?>
        </select></fieldset>

以下是生成的HTML代码:

<select id="cultpicklist" multiple="multiple" name="culture[]">
<option value="36" name="culture[]">test1</option>
<option value="37" name="culture[]">test2</option>
<option value="38" name="culture[]">test3</option>
<option value="39" name="culture[]">test4</option>
</select>

4 个答案:

答案 0 :(得分:3)

options 的索引不是 value的{​​{1}}。当您使用option时,您要向JS说明pl.options[37]中的第37个option而不是select option value

试试这个:

37

BTW :如果您已在页面上使用<script type="text/javascript"> var pl = document.getElementById("cultpicklist"); for(var i=0; i<pl.options.length;i++) { if(pl.options[i].value == "") { // Between the quotes you place the comparison value! pl.options[i].selected = true; } } </script> ,则使用它的功能更为正确,但如果您不使用jQuery则需要添加太多代码到您的页面只是为了更改jQuery值。

答案 1 :(得分:1)

你可能会把马放在马前。在浏览器中呈现DOM元素之前,您无法使用JavaScript来操作它们。

将您的脚本放在HTML之后,或者在运行脚本之前检查DOM是否准备就绪。

答案 2 :(得分:0)

为什么不首先使用JQuery ......

$('#cultpicklist').val('myvaluetoselect');

更容易编码,阅读和工作,而不是使用笨重的旧学校javascript ...

答案 3 :(得分:0)

使用jQuery,您仍然可以将代码放在<head></head>标记之间。您将使用$(document).ready()从而在整个文档呈现后执行您的代码。