注册 登录
编程论坛 ASP技术论坛

自己做的vbscript代码 出错 错误代码800A0400

yuhua101042 发布于 2012-07-04 07:52, 1290 次点击
代码目的是根据input数值将下拉列表后几项隐藏(变成灰色)
代码如下:<html>
<head>
<script type='text/vbscript'>
Sub abcd()
Dim i
Dim n
n=document.aa.a.options.length
For i=val(input1.text) To n-1
document.aa.a.options(i).disabled='disabled'
Next i
End Sub
</script>
</head>
<body>
<form id=='aa'>
<input name='input1' type='text' size=1 onchamge='abcd()'></input>
<Select id='a'>
<Option>
曾用名一
</Option>
<Option>
曾用名二
</Option>
<Option>
曾用名三
</Option>
<Option>
曾用名四
</Option>
<Option>
曾用名五
</Option>
<Option>
曾用名六
</Option>
<Option>
曾用名七
</Option>
</Select>
</form>
</body>
</html>



运行时,显示行1,字符1,错误。 错误代码800A0400。
我是个vbscript初学者,请大侠们帮忙!
还有就是XP系统的KB917344补丁已安装。
14 回复
#2
coretear2012-07-04 15:16
别的不说<input name='input1' type='text' size=1 onchamge='abcd()'></input>
</input> 不存在删掉
onchamge = onchange

[ 本帖最后由 coretear 于 2012-7-4 15:18 编辑 ]
#3
coretear2012-07-04 15:45
习惯用 js 给你做了你个参考一下吧 呵呵
程序代码:


<script>
function abcd(obj){
var i,l,val,sel;
sel = document.getElementById("a");
val = parseInt(obj.value) - 1;
l = sel.length;
for(var i=0; i<=l; i++)
    if(i>=val)
        sel.options(i).disabled = true;
    else
        sel.options(i).disabled = false;
}
</script>
</head>
<body>
<form id=='aa'>
<input name='input1' type='text' size=10 onchange='abcd(this)'>
<Select id='a'>
    <Option> 曾用名一 </Option>
    <Option> 曾用名二 </Option>
    <Option> 曾用名三 </Option>
    <Option> 曾用名四 </Option>
    <Option> 曾用名五 </Option>
    <Option> 曾用名六 </Option>
    <Option> 曾用名七 </Option>
</Select>



[ 本帖最后由 coretear 于 2012-7-4 15:48 编辑 ]
#4
yuhua1010422012-07-04 18:28
谢谢大侠,可3楼的程序代码还是不能出现想要的效果!
#5
yuhua1010422012-07-04 19:41
这回的代码是这样:
<html>
<head>
</head>
<body>
<script type="text/javascript">
function abcd(obj){
var i,l,val,sel;
sel = document.getElementById("a");
val = parseInt(obj.value) - 1;
l = sel.length;
for(var i=0; i<=l; i++)
    if(i>=val)
        sel.options(i).disabled = true;
    else
        sel.options(i).disabled = false;
}

</script>
<form>
<input name="input1" type="text" size="10" onchange="abcd(this)" />
<Select id='a'>
    <Option> 曾用名一 </Option>
    <Option> 曾用名二 </Option>
    <Option> 曾用名三 </Option>
    <Option> 曾用名四 </Option>
    <Option> 曾用名五 </Option>
    <Option> 曾用名六 </Option>
    <Option> 曾用名七 </Option>
</Select>
</body>
</html>


报错内容为:options(...)为空或不存在不是对象!~
请指教。
#6
coretear2012-07-04 20:53
我用ie运行没问题
#7
coretear2012-07-04 20:57
你是啥浏览器 IE 几 ,还是其它,这样效果并不是所有浏览器都支持,最好的方法用jq写
下面做了一下浏览器兼容,ff chrome ie 都支持
程序代码:

<script>
function abcd(obj){
var i,l,val,sel;
sel = document.getElementById("a");
val = parseInt(obj.value) - 1;
l = sel.length;
for(var i=0; i<=l; i++)
    if(i >= val)
        sel.options[i].disabled = true;
    else
        sel.options[i].disabled = false;
}
</script>
</head>
<body>
<form>
<input name='input1' type='text' size=10 onchange='abcd(this)'>
<Select id='a'>
    <Option> 曾用名一 </Option>
    <Option> 曾用名二 </Option>
    <Option> 曾用名三 </Option>
    <Option> 曾用名四 </Option>
    <Option> 曾用名五 </Option>
    <Option> 曾用名六 </Option>
    <Option> 曾用名七 </Option>
</Select>
</form>


[ 本帖最后由 coretear 于 2012-7-4 21:10 编辑 ]
#8
yuhua1010422012-07-05 08:42
我用的是IE6.0  谷歌chrome浏览器也试了,没有效果。
我双击运行时候打开的是搜狗高速浏览器(虽然搜狗浏览器不是我的默认浏览器)
错误最开始显示出现了运行时间错误!
请大侠指点!
#9
coretear2012-07-05 13:20
换个电脑试试吧
#10
yuhua1010422012-07-05 16:18
谢谢coretear,在360安全浏览器里试过,可以实现!
#11
coretear2012-07-05 16:40
我在ie chrome ff 测试都没问题 你做做系统看看
#12
yuhua1010422012-07-06 08:50
又出现新问题,我又加了一段代码,请问4月31日怎么不能成为灰色!
代码如下:
<html>
<head>
</head>
<body>
<script type="text/javascript">
function abcd(obj){
var i,l,val,sel;
sel = document.getElementById("a");
val = parseInt(obj.value) - 1;
l = sel.length;
for(var i=0; i<=l; i++)
    if(i>=val)
        sel.options(i).disabled = true;
    else
        sel.options(i).disabled = false;
}
</script>
<script type="text/javascript">
function abcde(){
var sel1,sel2;
sel1 = document.getElementById("ac");
sel2 = document.getElementById("ad");
if (sel1.selectedindex=3 or sel1.selectedindex=5) or   (sel1.selectedindex=8 or sel1.selectedindex=10)
sel2.options(30).disabled=false;

}

</script>
<form>
<input name="input1" type="text" size="10" onchange="abcd(this)" />
<Select id='a'>
   <Option> 曾用名一 </Option>
    <Option> 曾用名二 </Option>
    <Option> 曾用名三 </Option>
    <Option> 曾用名四 </Option>
    <Option> 曾用名五 </Option>
    <Option> 曾用名六 </Option>
    <Option> 曾用名七 </Option>
</Select>
<Select id='ab'>
    <Option> 1900 </Option>
    <Option> 1901 </Option>
    <Option> 1902 </Option>
    <Option> 1903 </Option>
    <Option> 1904 </Option>
    <Option> 1905 </Option>
    <Option> 1906 </Option>
    <Option> 1907 </Option>
    <Option> 1908 </Option>
    <Option> 1909 </Option>
    <Option> 1910 </Option>
    <Option> 1911 </Option>
    <Option> 1912 </Option>
    <Option> 1913 </Option>
    <Option> 1914 </Option>
    <Option> 1915 </Option>
    <Option> 1916 </Option>
    <Option> 1917 </Option>
    <Option> 1918 </Option>
    <Option> 1919 </Option>
    <Option> 1920 </Option>
    <Option> 1921 </Option>
    <Option> 1922 </Option>
    <Option> 1923 </Option>
    <Option> 1924 </Option>
    <Option> 1925 </Option>
    <Option> 1926 </Option>
    <Option> 1927 </Option>
    <Option> 1928 </Option>
    <Option> 1929 </Option>
    <Option> 1930 </Option>
    <Option> 1931 </Option>
    <Option> 1932 </Option>
    <Option> 1933 </Option>
    <Option> 1934 </Option>
    <Option> 1935 </Option>
    <Option> 1936 </Option>
    <Option> 1937 </Option>
    <Option> 1938 </Option>
    <Option> 1939 </Option>
    <Option> 1940 </Option>
    <Option> 1941 </Option>
    <Option> 1942 </Option>
    <Option> 1943 </Option>
    <Option> 1944 </Option>
    <Option> 1945 </Option>
    <Option> 1946 </Option>
    <Option> 1947 </Option>
    <Option> 1948 </Option>
    <Option> 1949 </Option>
    <Option> 1950 </Option>
    <Option> 1951 </Option>
    <Option> 1952 </Option>
    <Option> 1953 </Option>
    <Option> 1954 </Option>
    <Option> 1955 </Option>
    <Option> 1956 </Option>
    <Option> 1957 </Option>
    <Option> 1958 </Option>
    <Option> 1959 </Option>
    <Option> 1960 </Option>
    <Option> 1961 </Option>
    <Option> 1962 </Option>
    <Option> 1963 </Option>
    <Option> 1964 </Option>
    <Option> 1965 </Option>
    <Option> 1966 </Option>
    <Option> 1967 </Option>
    <Option> 1968 </Option>
    <Option> 1969 </Option>
    <Option> 1970 </Option>
    <Option> 1971 </Option>
    <Option> 1972 </Option>
    <Option> 1973 </Option>
    <Option> 1974 </Option>
    <Option> 1975 </Option>
    <Option> 1976 </Option>
    <Option> 1977 </Option>
    <Option> 1978 </Option>
    <Option> 1979 </Option>
    <Option> 1980 </Option>
    <Option> 1981 </Option>
    <Option> 1982 </Option>
    <Option> 1983 </Option>
    <Option> 1984 </Option>
    <Option> 1985 </Option>
    <Option> 1986 </Option>
    <Option> 1987 </Option>
    <Option> 1988 </Option>
    <Option> 1989 </Option>
    <Option> 1990 </Option>
    <Option> 1991 </Option>
    <Option> 1992 </Option>
    <Option> 1993 </Option>
    <Option> 1994 </Option>
    <Option> 1995 </Option>
    <Option> 1996 </Option>
    <Option> 1997 </Option>
    <Option> 1998 </Option>
    <Option> 1999 </Option>
    <Option> 2000 </Option>
    <Option> 2001 </Option>
    <Option> 2002 </Option>
    <Option> 2003 </Option>
    <Option> 2004 </Option>
    <Option> 2005 </Option>
    <Option> 2006 </Option>
    <Option> 2007 </Option>
    <Option> 2008 </Option>
    <Option> 2009 </Option>
    <Option> 2010 </Option>
    <Option> 2011 </Option>
    <Option> 2012 </Option>
</Select>
<Select id='ac' onclick="abcde()">
    <Option> 01 </Option>
    <Option> 02 </Option>
    <Option> 03 </Option>
    <Option> 04 </Option>
    <Option> 05 </Option>
    <Option> 06 </Option>
    <Option> 07 </Option>
    <Option> 08 </Option>
    <Option> 09 </Option>
    <Option> 10 </Option>
    <Option> 11 </Option>
    <Option> 12 </Option>
</Select>
<Select id='ad'>
    <Option> 01 </Option>
    <Option> 02 </Option>
    <Option> 03 </Option>
    <Option> 04 </Option>
    <Option> 05 </Option>
    <Option> 06 </Option>
    <Option> 07 </Option>
    <Option> 08 </Option>
    <Option> 09 </Option>
    <Option> 10 </Option>
    <Option> 11 </Option>
    <Option> 12 </Option>
    <Option> 13 </Option>
    <Option> 14 </Option>
    <Option> 15 </Option>
    <Option> 16 </Option>
    <Option> 17 </Option>
    <Option> 18 </Option>
    <Option> 19 </Option>
    <Option> 20 </Option>
    <Option> 21 </Option>
    <Option> 22 </Option>
    <Option> 23 </Option>
    <Option> 24 </Option>
    <Option> 25 </Option>
    <Option> 26 </Option>
    <Option> 27 </Option>
    <Option> 28 </Option>
    <Option> 29 </Option>
    <Option> 30 </Option>
    <Option> 31 </Option>
</Select>
</form>
</body>
</html>
谢谢大侠!
#13
coretear2012-07-06 19:14
哦今天忙,没时间上网,刚来看到,给你分析一下
js 不存在 or and 这样的写法 参考一下js的基本语法 看一下
&& || == 这样写的
看你写的东西大概理解你的意思,你是要根据大小月份天数来屏蔽ad是吧

还有 规范一下html代码 <Option> 01 </Option> 这样最好指定一下value <option value="1">01 </option>,不指定的话部分浏览器是读取不了“值”的,以下我根据你的情况给你写的代码,这样比较通用,闰年等问题也会解决,你参考一下,我详细了标注了说明

程序代码:

<script>
function abcd(obj){
var i,l,val,sel;
sel = document.getElementById("a");
//获得值转换类型Int,数组往往从零开始所以获得的值要-1
val = parseInt(obj.value) - 1;
l = sel.length;
for(var i=0; i<=l; i++)
    if(i >= val)
        sel.options[i].disabled = true;
    else
        sel.options[i].disabled = false;
}

function abcde(){
    //获得DOM
    var ab = document.getElementById("ab");
    var ac = document.getElementById("ac");
    var ad = document.getElementById("ad");
    //输出信息的接收实际应用中删除
    var text = document.getElementById("text");
    //获得个Select的text,因为你没有赋值Value,有的浏览器获得不了Value
    var Year = ab.options[ab.selectedIndex].text;
    var Month = ac.options[ac.selectedIndex].text;
    //获得当前月份的天数
    var curMonthDays = new Date(Year, Month, 0).getDate();
    //输出文本信息
    text.innerHTML = Year+""+Month+"月 共有 "+ curMonthDays +"";
    //循环所有天数,符合条件屏蔽
    for(var i=0; i<=ad.length; i++)
    {
        if(curMonthDays <= i){
            //alert(i)
            ad.options[i].disabled = true;
        }else{
            ad.options[i].disabled = false;
        }
    }
}
</script>
</head>
<body>
<form>
<input name="input1" type="text" size="10" onchange="abcd(this)" />
<Select id='a'>
   <Option> 曾用名一 </Option>
    <Option> 曾用名二 </Option>
    <Option> 曾用名三 </Option>
    <Option> 曾用名四 </Option>
    <Option> 曾用名五 </Option>
    <Option> 曾用名六 </Option>
    <Option> 曾用名七 </Option>
</Select>

<Select id='ab' onchange="abcde()">
    <Option> 1900 </Option>
    <Option> 1901 </Option>
    <Option> 1902 </Option>
    <Option> 1903 </Option>
    <Option> 1904 </Option>
    <Option> 1905 </Option>
    <Option> 1906 </Option>
    <Option> 1907 </Option>
    <Option> 1908 </Option>
    <Option> 1909 </Option>
    <Option> 1910 </Option>
    <Option> 1911 </Option>
    <Option> 1912 </Option>
    <Option> 1913 </Option>
    <Option> 1914 </Option>
    <Option> 1915 </Option>
    <Option> 1916 </Option>
    <Option> 1917 </Option>
    <Option> 1918 </Option>
    <Option> 1919 </Option>
    <Option> 1920 </Option>
    <Option> 1921 </Option>
    <Option> 1922 </Option>
    <Option> 1923 </Option>
    <Option> 1924 </Option>
    <Option> 1925 </Option>
    <Option> 1926 </Option>
    <Option> 1927 </Option>
    <Option> 1928 </Option>
    <Option> 1929 </Option>
    <Option> 1930 </Option>
    <Option> 1931 </Option>
    <Option> 1932 </Option>
    <Option> 1933 </Option>
    <Option> 1934 </Option>
    <Option> 1935 </Option>
    <Option> 1936 </Option>
    <Option> 1937 </Option>
    <Option> 1938 </Option>
    <Option> 1939 </Option>
    <Option> 1940 </Option>
    <Option> 1941 </Option>
    <Option> 1942 </Option>
    <Option> 1943 </Option>
    <Option> 1944 </Option>
    <Option> 1945 </Option>
    <Option> 1946 </Option>
    <Option> 1947 </Option>
    <Option> 1948 </Option>
    <Option> 1949 </Option>
    <Option> 1950 </Option>
    <Option> 1951 </Option>
    <Option> 1952 </Option>
    <Option> 1953 </Option>
    <Option> 1954 </Option>
    <Option> 1955 </Option>
    <Option> 1956 </Option>
    <Option> 1957 </Option>
    <Option> 1958 </Option>
    <Option> 1959 </Option>
    <Option> 1960 </Option>
    <Option> 1961 </Option>
    <Option> 1962 </Option>
    <Option> 1963 </Option>
    <Option> 1964 </Option>
    <Option> 1965 </Option>
    <Option> 1966 </Option>
    <Option> 1967 </Option>
    <Option> 1968 </Option>
    <Option> 1969 </Option>
    <Option> 1970 </Option>
    <Option> 1971 </Option>
    <Option> 1972 </Option>
    <Option> 1973 </Option>
    <Option> 1974 </Option>
    <Option> 1975 </Option>
    <Option> 1976 </Option>
    <Option> 1977 </Option>
    <Option> 1978 </Option>
    <Option> 1979 </Option>
    <Option> 1980 </Option>
    <Option> 1981 </Option>
    <Option> 1982 </Option>
    <Option> 1983 </Option>
    <Option> 1984 </Option>
    <Option> 1985 </Option>
    <Option> 1986 </Option>
    <Option> 1987 </Option>
    <Option> 1988 </Option>
    <Option> 1989 </Option>
    <Option> 1990 </Option>
    <Option> 1991 </Option>
    <Option> 1992 </Option>
    <Option> 1993 </Option>
    <Option> 1994 </Option>
    <Option> 1995 </Option>
    <Option> 1996 </Option>
    <Option> 1997 </Option>
    <Option> 1998 </Option>
    <Option> 1999 </Option>
    <Option> 2000 </Option>
    <Option> 2001 </Option>
    <Option> 2002 </Option>
    <Option> 2003 </Option>
    <Option> 2004 </Option>
    <Option> 2005 </Option>
    <Option> 2006 </Option>
    <Option> 2007 </Option>
    <Option> 2008 </Option>
    <Option> 2009 </Option>
    <Option> 2010 </Option>
    <Option> 2011 </Option>
    <Option> 2012 </Option>
</Select>
<Select id='ac' onchange="abcde()">
    <Option> 01 </Option>
    <Option> 02 </Option>
    <Option> 03 </Option>
    <Option> 04 </Option>
    <Option> 05 </Option>
    <Option> 06 </Option>
    <Option> 07 </Option>
    <Option> 08 </Option>
    <Option> 09 </Option>
    <Option> 10 </Option>
    <Option> 11 </Option>
    <Option> 12 </Option>
</Select>
<Select id='ad'>
    <Option> 01 </Option>
    <Option> 02 </Option>
    <Option> 03 </Option>
    <Option> 04 </Option>
    <Option> 05 </Option>
    <Option> 06 </Option>
    <Option> 07 </Option>
    <Option> 08 </Option>
    <Option> 09 </Option>
    <Option> 10 </Option>
    <Option> 11 </Option>
    <Option> 12 </Option>
    <Option> 13 </Option>
    <Option> 14 </Option>
    <Option> 15 </Option>
    <Option> 16 </Option>
    <Option> 17 </Option>
    <Option> 18 </Option>
    <Option> 19 </Option>
    <Option> 20 </Option>
    <Option> 21 </Option>
    <Option> 22 </Option>
    <Option> 23 </Option>
    <Option> 24 </Option>
    <Option> 25 </Option>
    <Option> 26 </Option>
    <Option> 27 </Option>
    <Option> 28 </Option>
    <Option> 29 </Option>
    <Option> 30 </Option>
    <Option> 31 </Option>
</Select>
<span id="text"></span>
</form>


[ 本帖最后由 coretear 于 2012-7-6 19:16 编辑 ]
#14
coretear2012-07-06 19:16
还有<script>在开始的话只写一个就好,不用写多个
#15
coretear2012-07-06 19:20
我现在的工作跟写代码一点关系都没有,做开发是8年前的工作,有问题发出来,短信给我,我上了就回答
1