2011-06-05 115 views
1

屬性我使用的是自定義的TimeSelector,我在HTML頁面上放置如下:編程方式訪問HTML的JavaScript

<MKB:TimeSelector DisplaySeconds="false" ID="endTimeSelector" runat="server" Visible="True" Date="5:30 PM" /> 

在JavaScript函數,我想更新日期屬性。我已經試過這些(不工作):

var sel = document.getElementById("endTimeSelector"); 
    sel.Date="6:30 PM"; 
    sel.setAttribute("Date","6:30 PM"); 

由於這是一個自定義選擇,我不希望特定於該組件的答案。我想我只是問是否有一個通用的解決方案來更新來自Javascript的HTML屬性(不先到服務器)。

編輯:好的,所以它不工作的原因是,這不是由於ASP的真實ID。確實,這裏是真正的HTML:

<span id="endTimeSelector"><table CellSpacing="0" CellPadding="0" style="border-collapse:collapse;border-style:None;border-width:0px;"> 
       <tr> 
        <td style="vertical-align:Bottom;"><input id="endTimeSelector_txtHour" name="endTimeSelector" onclick="this.select();lastFocusCtrl=this;" onchange="intOnly(this,12);" onFocus="this.select();lastFocusCtrl=this;" onKeyDown="return updownArrow(event, this,12,15,1);" cols="2" maxlength="2" value="05" style="height:15px;border-bottom:solid 1px Silver;border-left:solid 1px Silver;border-top:solid 1px Silver;background-color:;border-right:none;width:17px;font-size:9pt;" /><input readonly="readonly" cols="1" maxlength="1" value=":" onclick="this.nextSibling.focus();//this.blur();return false;" onfocus="this.nextSibling.focus();//blur();return false;" style="height:15px;border-bottom:solid 1px Silver;border-left:none;border-right:none;border-top:solid 1px Silver;background-color:;font-size:9pt;width:4px;" /><input id="endTimeSelector_txtMinute" name="endTimeSelector_txtMinute" onclick="this.select();lastFocusCtrl=this;" onchange="intOnly(this,12);" onFocus="this.select();lastFocusCtrl=this;" onKeyDown="return updownArrow(event, this,12,15,1);" cols="2" maxlength="2" value="30" style="height:15px;border-bottom:solid 1px Silver;border-left:none;border-top:solid 1px Silver;background-color:;border-right:none;width:17px;font-size:9pt;" /><input id="endTimeSelector_txtAmPm" name="endTimeSelector_txtAmPm" readonly="readonly" onclick="this.select();lastFocusCtrl=this;" onchange="keepAmPm();" onFocus="this.select();lastFocusCtrl=this;" onKeyDown="return updownArrow(event, this,12,15,1);" cols="2" maxlength="2" value="PM" style="height:15px;border-bottom:solid 1px Silver;border-left:none;border-right:solid 1px Silver;border-top:solid 1px Silver;background-color:;width:22px;font-size:9pt;" /></td><td><img id="endTimeSelector_imgUp" onclick="addTime(this,12,15,1);" src="/WebResource.axd?d=tiVFNiu7HJgIVjO35sllj-s8Z6xcGnuxvWjcv0djLK_ZmlnEvSWKeuPozcoAJ1jdWjt3Em28mdAuVmJ3sjSDr9LkBqj6QzQZ5DI3R2uqFhoN8cDn0&amp;t=634103086365158927" onMouseOver="this.src='/WebResource.axd?d=Qwp1CEy_uAYBRj85nDAQgbZhe_gPeEn6uH400SE9Ka9Ba6-0jO725XcMqD-0COZumHZlpEmorXnDALAg08OiLidM1LQwMWqOZjS8k7tAw7ECNag4Bf2m7vLYgXi_qGcGiYyX_A2&amp;t=634103086365158927';" onMouseOut="this.src='/WebResource.axd?d=tiVFNiu7HJgIVjO35sllj-s8Z6xcGnuxvWjcv0djLK_ZmlnEvSWKeuPozcoAJ1jdWjt3Em28mdAuVmJ3sjSDr9LkBqj6QzQZ5DI3R2uqFhoN8cDn0&amp;t=634103086365158927';" style="cursor:pointer;" /><br /><img id="endTimeSelector_imgDown" onclick="subtractTime(this,12,15,1);" src="/WebResource.axd?d=RVSDbruLRZ0XghTuQh3hchhyT2e1a6SFSCXTFMsJE6ux0Q-eu595sEnqVZjLRVJIk8d1eraE2M2gVUNfg53pgpfVC5Zpok9BfW7SZbqS5Cw5--R20&amp;t=634103086365158927" onMouseOver="this.src='/WebResource.axd?d=AKuxDQkfX9IrXbNQV4GNdTNCDKooNjlZXtJpRgDvjUm7-6FL0ZGTizlx50cTntULqw3ZuEaV7CYV4hWPZa9ZdVWCsPfPrSyKMGJNDRWsBYHpdYUH1HrLPbbaesYkf-cDXlZ_-w2&amp;t=634103086365158927';" onMouseOut="this.src='/WebResource.axd?d=RVSDbruLRZ0XghTuQh3hchhyT2e1a6SFSCXTFMsJE6ux0Q-eu595sEnqVZjLRVJIk8d1eraE2M2gVUNfg53pgpfVC5Zpok9BfW7SZbqS5Cw5--R20&amp;t=634103086365158927';" style="cursor:pointer;" /></td> 

       </tr> 
      </table></span> 

哎呀,這是醜陋的。不再有任何稱爲「日期」的屬性。

編輯2:這是否意味着不可能直接更新日期屬性?

如果我將類似Date設置爲某個變量的值,並更新變量,該怎麼辦?

+0

您是否收到任何錯誤? – Znarkus 2011-06-05 21:02:43

+2

你可以顯示實際的HTML,因爲它在客戶端上嗎? – nickf 2011-06-05 21:02:55

+0

這不是HTML ... – Eric 2011-06-05 21:16:31

回答

0

要做到這一點,您必須訪問您自定義控件內的html控件本身。 試圖讓HTML控件,然後用你want.you可以如下做到這一點使用jQuery的值設置其值爲:

$('#HTMLControlID').attr('attributeName','value'); 

$('#HTMLControlID').prop('attributeName','value'); //jquery 1.6 
+1

你必須首先提到他必須獲得JQuery,否則他會坐更麻煩。 – LouwHopley 2011-06-05 21:11:05

+0

不確定使用jQuery來解決問題的答案是 – 2011-06-05 21:15:10

+0

@Nideo o =你說得對,我很抱歉。 – 2011-06-05 21:21:11

2

檢查Control.ClientID屬性。

這條線:

var sel = document.getElementById("endTimeSelector"); 

需求是:

var sel = document.getElementById("<%= endTimeSelector.ClientID %>"); 

這是一個典型的錯誤你有什麼不是HTML,這是一個簡單的語法賴以ASP .NET轉換爲HTML,並在這樣做更改控制ID的。通過在瀏覽器中查看源代碼來檢查HTML,我認爲你會發現它與你寫的很不一樣!