javascript如何取option的text值(firefox下使用)
Firefox下面沒有innerText,所以我們想在firefox下獲取下列框選中option的text(注意不是value)時會比較吃力。作者結合自己在專案中的解決方案和程式碼總結一下,請大家指教。
知識點:
0、為什麼要innerText?因為安全問題
1、為firefox dom模型擴展屬性
2、currentStyle屬性可以取得實際的style狀態
3、IE實現innerText時考慮了display方式,如果是block則加換行
4、為什麼不用textContent?因為textContent沒有考慮元素的display方式,所以不完全與IE相容
程式碼: 在IE6,7,8 和firefox 2,3下測試均通過。
<html> <head> <script language="javascript"> //If your browser is IE , return true. If is others, like firefox, return false. function isIE(){ //ie? if (window.navigator.userAgent.toLowerCase().indexOf("msie")>=1) return true; else return false; } //If is firefox , we need to rewrite its innerText attribute. if(!isIE()){ //firefox innerText define HTMLElement.prototype.__defineGetter__( "innerText", function(){ var anyString = ""; var childS = this.childNodes; for(var i=0; i<childS.length; i++) { if(childS[i].nodeType==1) anyString += childS[i].tagName=="BR" ? '\n' : childS[i].textContent; else if(childS[i].nodeType==3) anyString += childS[i].nodeValue; } return anyString; } ); HTMLElement.prototype.__defineSetter__( "innerText", function(sText){ this.textContent=sText; } ); } function getSelectedText(name){ var obj=document.getElementById(name); for(i=0;i<obj.length;i++){ if(obj[i].selected==true){ return obj[i].innerText; } } } function chk(){ var objText = getSelectedText("mySelect"); alert("seleted option's text is : "+objText); var objValue=document.getElementById("mySelect").value; alert("seleted option's value is :"+objValue); } </script> </head> <body> <select id="mySelect"> <option value="1111">My 1111 hahaha</option> <option value="2222">My 2222</option> <option value="3333">My 3333</option> <option value="4444">My 4444</option> </select> <input type="button" name="button" value="see result" onclick="javascript:chk();"> </body> </html>
當然,如果單獨針對下拉框,也可以不用重寫innerText,用下面的程式碼也能實現。重寫innerText是為了相容於下拉框以外的其他的HTML 元素。
<html> <head> <script language="javascript"> function chk(){ //var objText = getSelectedText("mySelect"); var obj = document.getElementById("mySelect"); var objText = obj.options[obj.selectedIndex].text alert("seleted option's text is : "+objText); var objValue=document.getElementById("mySelect").value; alert("seleted option's value is :"+objValue); } </script> </head> <body> <select id="mySelect"> <option value="1111">My 1111 hahaha</option> <option value="2222">My 2222</option> <option value="3333">My 3333</option> <option value="4444">My 4444</option> </select> <input type="button" name="button" value="see result" onclick="javascript:chk();"> </body> </html>
以上就是javascript如何取option的text值(firefox下使用)的內容,更多相關文章請關注PHP中文網(www.php.cn)!