跪求指点:mshtml::IHTMLElement,修改html标签属性

ShuDaiZiSoYoung 2012-11-22 03:03:49
html如下

<center>
<input type="submit" value="提交" style="display:block" />
</center>


想要修改style="display:block" 为 style="display:none",是通过getAttribute和setAttribute来修改吗?
LPDISPATCH lpDispatch;
IHTMLElement* ipBody= NULL;
lpDispatch = GetHtmlDocument();
CComQIPtr<IHTMLDocument2, &IID_IHTMLDocument2> pDoc2;
HRESULT hr;
hr = lpDispatch->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc2);
if (SUCCEEDED(hr))
{

pDoc2->get_body(&ipBody);
}

_bstr_t bstrName(_T("INPUT"));
_variant_t vtValue;
ipBody->getAttribute(bstrName, 0, &vtValue);
//这么写得不到啊。。。
求牛人指点...
...全文
267 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_ask_who 2012-11-22
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390162977 返回值vtValue改一下,要指定类型.
ShuDaiZiSoYoung 2012-11-22
  • 打赏
  • 举报
回复
您看我这样行吗?给input那加个属性 ID=“cc” IHTMLElement* ipElement; IHTMLDocument2* ipDocument =(IHTMLDocument2*)GetHtmlDocument(); if(ipDocument==NULL) return ipElement; IHTMLElementCollection* ipSet; ipDocument->get_all(&ipSet); if(ipSet==NULL) return ipElement; IDispatch* ipDispatch; _variant_t vtIndex; _bstr_t bs(strID); BSTR bstrName = bs; _variant_t vtName; vtName.bstrVal = bstrName; if (S_OK ==ipSet->item(vtName, vtIndex, &ipDispatch)) { MessageBox(strID); } ipDispatch->QueryInterface(IID_IHTMLElement,(void**)&ipElement); _bstr_t bstrName=_T("value"); _variant_t vtValue; ipElement->getAttribute(bstrName, 0, &vtValue);//这里取不到那个属性,是哪的问题?
I_ask_who 2012-11-22
  • 打赏
  • 举报
回复
type是属性,input是element, body的children有<center> body->get_children(&pItems); pItems->queryinterface("IID_IHTMLElementCollection",&items); items->item("center",&pVoid); pVoid->queryinterface("IID_IHTMLElement",&pCenter) center的children有<input> pCenter->get_children(&pItems); pItems->queryinterface("IID_IHTMLElementCollection",&items); items->item("input",&pVoid); pVoid->queryinterface("IID_IHTMLElement",&pItem) input是一个IHTMLElement,然后里面再getAttribute("type")才能得到属性. pItem->getAttribute("type"); ...
ShuDaiZiSoYoung 2012-11-22
  • 打赏
  • 举报
回复
是不是先得到 IHTMLElementCollection,然后在里面找input标签,定位到“input”是什么意思?是有个IHTMLElementPtr指向它吗?那它的属性要怎么得到呢??getAttribute("type")?
ShuDaiZiSoYoung 2012-11-22
  • 打赏
  • 举报
回复
如果 知道 这个标签的ID呢,怎么样修改
oyljerry 2012-11-22
  • 打赏
  • 举报
回复
要遍历所有的元素,然后再匹配INPUT
I_ask_who 2012-11-22
  • 打赏
  • 举报
回复
pBody->get_children(&pDispatch); QueryInterface(IID_IHTMLElementCollection,(void**)&pElements); pElements->item("center",...); 以此类推,再找到"input" 标签属性等到定位到Input再说,是指"type","value"等带等号的货色...

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧