2015-06-21 145 views
2

我試圖取消選中使用Excel VBA的網頁上已經選中的複選框。取消選中IE中的複選框

HTML代碼:

<div class="mycheckbox checked"> 
<label class="mycheckbox1 checked" data-initialize="checkbox"> 
    <input name=<name> class=<class> id=<id> type="checkbox" checked="checked"></input></label></div> 

VBA代碼存根:

Public Sub uncheck(IE As Object) 
    Dim Element As Object 
     With IE.Document 
      Set Element = .getElementById(<id>) 
      Element.Checked = False 
      Element.defaultChecked = False   
     End With 
    End Sub 

如期望的那樣HTML代碼更改爲這不工作了 -

<div class="mycheckbox checked"> 
<label class="mycheckbox1 checked" data-initialize="checkbox"> 
    <input name=<name> class=<class> id=<id> type="checkbox" checked=""></input></label></div> 

該複選框是不選中因爲仍有檢查屬性

即使嘗試了下面的(點擊複選框)。它什麼也沒做 -

Public Sub uncheck(IE As Object) 
    Dim Element As Object 
     With IE.Document 
      Set Element = .getElementById(<id>) 
      Element.Click 
     End With 
    End Sub 

有什麼建議嗎?或者我可以知道爲什麼我的方法不起作用?

+0

複選框是否是表單的一部分? –

+0

嘿!我在編輯問題時發現[this](http://getfuelux.com/javascript.html#checkbox-usage-data-attributes)。我想我多加一點html可能有助於弄清楚。 –

+0

爲什麼不用'特定字符串值替換'',''和''?這會提高可讀性,這是令人困惑的,因爲實際上是錯誤的語法。 – omegastripes

回答

3

這裏是允許做一個通用的測試,如果我們可以取消選中該複選框代碼:

​​

對我來說它按預期工作:顯示選中的複選框,並第一個警報,然後取消選中它並顯示第二警報。如果您的網頁以其他方式工作,那麼通過開發人員工具查看您的網頁上的複選框onclickonchange事件處理程序是值得的。在IE中,按F12,點擊DOM Explorer,選中HTML代碼複選框,點擊事件選項卡。如果有任何事件處理程序,那麼您必須澄清它是否修改複選框的狀態(緊隨VBA之後)。

+0

感謝您的提示!是的,它有標籤和輸入元素的事件。那麼我必須研究它們。如果這些事件將是真正的罪魁禍首,我會捲土重來並將其作爲必要答案投票 –