好的,这是我的代码。我正在尝试使用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>
答案 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()
从而在整个文档呈现后执行您的代码。