酷!學園
技術討論區 => 網頁技術 => 主題作者是: alucardc 於 2012-09-05 09:32
-
首先要先說明一下我對javascript與jQuery都是非常非常*n新手 只是copy公司前輩的程式碼來用
所以先說明一下這些程式碼的目的
目的 : 在html做出來的一個下拉式選單裡 若是選中了其中一個選項 (信用卡)
此時畫面中會跑出信用卡卡號、有效日期等等的 input 欄位
若是選了別的選項,這些欄位則不會顯示出來,程式碼如下
html部分
/////////////////////////////////////////////////////////////////////
<span id='credit'>
信用卡號:
<input type='text' name='credid' id='credid' value='<?=$credid?>' size='20' maxlength='19' /></br>
信用卡有效日期:
<select id='expiry_year' name='expiry_year' onchange='update_expiry()'><?=select_expiry_year();?></select>年
<select id='expiry_mon' name='expiry_mon' onchange='update_expiry()'>
<?=select_expiry_mon()?></select>月
</span>
javascript部分
/////////////////////////////////////////////////////////////////////
<script type='text/javascript'>
function show_credit(obj){
credit = document.getElementById('credit');
if(obj.value == '信用卡'){
credit.style.display = 'inline';
}
else{
credit.style.display = 'none';
}
}
var tooltip = new Array();
$(document).ready(show_credit(document.getElementById('billac_type')));
jQuery(function($){
$("#credid").mask("9999-9999-9999-9999",{completed:function(){alert("信用卡號格式不符: "+this.val());}});
$("#credit_date").mask("99/99",{completed:function(){alert("信用卡有效日期不符: "+this.val());}}) ;
});
</script>
/////////////////////////////////////////////////////////////////////
IE8 左下角 錯誤三角型 出現的錯誤訊息是
網頁錯誤詳細資料
使用者代理程式: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
時間戳記: Wed, 5 Sep 2012 01:24:13 UTC
訊息: 物件不支援此屬性或方法
行: 361
字元: 4
程式碼: 0
URI: http://localhost/WEBERP/000werp/store/index.php?act=shopcar
然後361行 就是
credit = document.getElementById('credit');
這邊
不知道該怎麼修正這個錯誤?
又或者是有另外可以達成同樣目的的程式寫法,有範例可以給我參考
謝謝各位
-
IE8 會先載入 ELEMENT 才可以 在 JS 上 認的出 你指定的 OBJECT ID
很王八蛋的設計. ( SORRY 我是超級排軟派 )
解法 :
1. 在 MINE TYPE 上 下 :
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
2. 直接把 JS 放在 ELEMENT 下面
<BODY>
ELEMENT .......
JS : GET Object id.
</BODY>
-
講個笑話~~
很多年以前~剛失戀...
有個客戶一直PUSH 我去追他們配合的微軟女業務.
那個業務天天往他們公司跑. 而且聽說很正點~~~
當時我一直沒有動作.
@@" 因為我討厭微軟~~~
有冷到~~哈哈~~
-
IE8 會先載入 ELEMENT 才可以 在 JS 上 認的出 你指定的 OBJECT ID
很王八蛋的設計. ( SORRY 我是超級排軟派 )
解法 :
1. 在 MINE TYPE 上 下 :
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
2. 直接把 JS 放在 ELEMENT 下面
<BODY>
ELEMENT .......
JS : GET Object id.
</BODY>
感謝回複
第一個方法我加了還是沒有用
第二個方法 ... 是說把
<script type='text/javascript'>
function show_credit(obj){
credit = document.getElementById('credit');
if(obj.value == '信用卡'){
credit.style.display = 'inline';
}
else{
credit.style.display = 'none';
}
}
</script>
這邊改變位置嗎... 改了還是一樣
-
IE8 會先載入 ELEMENT 才可以 在 JS 上 認的出 你指定的 OBJECT ID
很王八蛋的設計. ( SORRY 我是超級排軟派 )
解法 :
1. 在 MINE TYPE 上 下 :
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
2. 直接把 JS 放在 ELEMENT 下面
<BODY>
ELEMENT .......
JS : GET Object id.
</BODY>
感謝回複
第一個方法我加了還是沒有用
第二個方法 ... 是說把
<script type='text/javascript'>
function show_credit(obj){
credit = document.getElementById('credit');
if(obj.value == '信用卡'){
credit.style.display = 'inline';
}
else{
credit.style.display = 'none';
}
}
</script>
這邊改變位置嗎... 改了還是一樣
你有先讓 ELEMENT 上的 ID 被讀取再去 叫 OBJECT ID 嗎?
-
先利用 alert() 去判斷 .
credit = document.getElementById('credit')
的 credit 有沒有抓到東西.
alert(credit) ;
把 JS 的位置放在 ELEMENT 上指定 OBJECT ID 的 HTML CODE 下.
看看 credit 用 ALERT 吐出來的是什麼內容.
-
先利用 alert() 去判斷 .
credit = document.getElementById('credit')
的 credit 有沒有抓到東西.
alert(credit) ;
把 JS 的位置放在 ELEMENT 上指定 OBJECT ID 的 HTML CODE 下.
看看 credit 用 ALERT 吐出來的是什麼內容.
可以了 非常感謝你
我把 credit = document.getElementById('credit') 這行 拉到
function show_credit(obj){ } 上面就 可以了
雖然IE還是有錯誤 但可以正常隱藏跟顯示
然後我把 credit = 都去掉 只剩下
document.getElementById('credit') 就 ok了
(不知道原本這語法是有啥問題 把getElement到的東西存到credit變數不行嗎?)
-
先利用 alert() 去判斷 .
credit = document.getElementById('credit')
的 credit 有沒有抓到東西.
alert(credit) ;
把 JS 的位置放在 ELEMENT 上指定 OBJECT ID 的 HTML CODE 下.
看看 credit 用 ALERT 吐出來的是什麼內容.
可以了 非常感謝你
我把 credit = document.getElementById('credit') 這行 拉到
function show_credit(obj){ } 上面就 可以了
雖然IE還是有錯誤 但可以正常隱藏跟顯示
然後我把 credit = 都去掉 只剩下
document.getElementById('credit') 就 ok了
(不知道原本這語法是有啥問題 把getElement到的東西存到credit變數不行嗎?)
我把 credit = document.getElementById('credit') 這行 拉到
function show_credit(obj){ } 上面就 可以了
直譯式語言 要先宣告才能用.
不像編譯式的 , 宣告位置可以放在 執行位置下面.
你的CODE 犯了這個錯.
學會用 ALERT 去 DEBUG 速度就快多了.
#####################
IE8 的錯誤訊息.... 我也不知道~AP 層的瀏覽器環境很亂 一直都有統一的格式 W3C 規範~
但是錢軟很愛亂改東西 , 而且不喜歡 遵守 W3C 的規範.
尤其是每次大改版 都不能上下相容.
我年輕的時候 為了錢軟 常常加班找問題........
習慣就好...
-
如果你不喜歡常常被錢軟整
可以使用 第三方包好的套件來串你要的功能 , 問題會比較少.
因為第三方 己經幫你在 包裝套件的核心部份把問題都解決掉了.
推薦你用 JQUERY 相容的瀏覽器版本較多.
但是不支援 IE6 以下的版本.