2011-11-28 15 views
1

好的,這裏是我的代碼。我想選擇使用Javascript一個列表值,從PHP(我不想直接的方法與PHP這樣做,因爲這不會對我的特別程序中工作)使用Javascript選擇選項值,使用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

確保在選擇列表創建後執行代碼。 –

+0

應該是。它位於底部,只有在按下按鈕時纔會運行。 –

回答

3

options索引不是optionvalue。當您使用pl.options[37]時,您要求JS獲取第三十七option,select而不是optionvalue37

試試這個:

<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> 

BTW:如果你已經在你的網頁是更正確的使用它的功能上使用jQuery,但如果你不使用jQuery是太多的代碼添加到您的頁面只是爲了更改select值。

+0

工程,繁榮,謝謝! –

1

你很可能把車推到馬前。在瀏覽器中呈現它們之前,您無法使用JavaScript來操作DOM元素。

在您的HTML之後放置您的腳本,或在運行腳本之前查看DOM是否已準備就緒。

+0

我的腳本在我的HTML之後。這個腳本位於頁面的底部,在HTML被渲染之後。 –

+0

非常真實,ohhhh很多次我放置在DOM加載之前的JS。那是在jquery存在之前:) –

+0

好吧,請發佈您的HTML,以便我們可以看看。 –

0

爲什麼不使用JQuery首先是...

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

是代碼容易得多,閱讀和工作,而不是使用笨重的老同學的JavaScript ...

+0

嘗試不使用任何外部腳本,因爲我不確定它們是否被允許或期望。 –

+0

@MathieuDumoulin jquery很棒,但不笨重?喚醒你的自我 – david

+0

龐大的代碼量來說,確保jquery的31kb縮小版非常容易下載,但有助於簡化操作。謝謝你指出你有多瞭解我的答案。我很高興能夠啓發你。 –

0

使用jQuery,你仍然可以把你的代碼放在<head></head>標籤之間。您將使用$(document).ready(),從而在整個文檔已經呈現後執行您的代碼。