日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

如何檢查 HTML 中的元素是否被隱藏

系統(tǒng) 1936 0

我們常會(huì)使用 element.focus() 方法,讓鍵盤游標(biāo)停留在某個(gè)欄位上。例如說「會(huì)員登入」頁面開啟時(shí),鍵盤輸入的游標(biāo)就直接停在「帳號(hào)」欄位上,讓頁面開啟來後就可以直接輸入帳號(hào)。

但是當(dāng)我畫面上的表單元素很多時(shí),我會(huì)動(dòng)態(tài)的將某些欄位隱藏,導(dǎo)致程式在執(zhí)行 focus() 方法時(shí)會(huì)出現(xiàn)「控制項(xiàng)不可見、未啟動(dòng)或無法接受焦點(diǎn),因此無法將焦點(diǎn)移到控制項(xiàng)上。」的 JavaScript錯(cuò)誤。

例如說下面的 HTML:

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" lang ="tw" >
< head >
< title > 測(cè)試在 display:none 下的元素 </ title >
< script type ="text/javascript" >
window.onload = function ()
{
txtUsername = document.getElementById( 'username' );
txtUsername.focus()
}
</ script >
</ head >
< body >
< form >
< div style ="display:none;" >
< input type ="text" id ="username" name ="username" value ="" />
</ div >


</ form >
</ body >
</ html >

在執(zhí)行的時(shí)候,就會(huì)出現(xiàn)以下錯(cuò)誤訊息:

之前這個(gè)問題困擾我很久,雖然我最後是用 try / catch 的方式解決的,但最近找到 2 個(gè)不錯(cuò)的方法:

1. 當(dāng)該元素目前是被隱藏的狀態(tài)時(shí),該元素的 offsetWidth 屬性的值一定是 0,所以你就可以修改 JavaScript 避開錯(cuò)誤了,如下:

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" lang ="tw" >
< head >
< title > 測(cè)試在 display:none 下的元素 </ title >
< script type ="text/javascript" >
window.onload = function ()
{
txtUsername = document.getElementById( 'username' );

if (txtUsername.offsetWidth != 0)
{
txtUsername.focus();
}
}
</ script >
</ head >
< body >
< form >
< div style ="display:none;" >
< input type ="text" id ="username" name ="username" value ="" />
</ div >


</ form >
</ body >
</ html >

2. 另外也可以用「更嚴(yán)謹(jǐn)」的方法來檢查 HTML 中的元素是否被隱藏,如下:

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html xmlns ="http://www.w3.org/1999/xhtml" lang ="tw" >
< head >
< title > 測(cè)試在 display:none 下的元素 </ title >
< script type ="text/javascript" >


function ElementIsVisible(elm)
{
if ( typeof (elm.style) != "undefined" &&
(
( typeof (elm.style.display) != "undefined"
&& elm.style.display == "none" )
||
( typeof (elm.style.visibility) != "undefined"
&& elm.style.visibility == "hidden" )
)
)
{
return false ;
}
else if ( typeof (elm.parentNode) != "undefined"
&& elm.parentNode != null
&& elm.parentNode != elm)
{
return ElementIsVisible(elm.parentNode);
}
return true ;
}


window.onload = function ()
{
txtUsername = document.getElementById( 'username' );

if (ElementIsVisible(txtUsername))
{
txtUsername.focus();
}
}
</ script >
</ head >
< body >
< form >
< div style ="display:none;" >
< input type ="text" id ="username" name ="username" value ="" />
</ div >


</ form >
</ body >
</ html >

如何檢查 HTML 中的元素是否被隱藏


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 油尖旺区| 江安县| 海口市| 麟游县| 长武县| 鄂州市| 金阳县| 滦平县| 镇康县| 军事| 林周县| 三穗县| 潜江市| 会昌县| 松江区| 凤山市| 洪雅县| 台安县| 阿瓦提县| 宁远县| 东海县| 堆龙德庆县| 临夏县| 新建县| 双流县| 靖宇县| 防城港市| 定西市| 阿巴嘎旗| 宜都市| 昭平县| 广西| 绥化市| 永兴县| 余江县| 福州市| 定远县| 德安县| 永年县| 维西| 略阳县|