把上面的源程序copy到html文件中,选择select列表中某一项后,就报js错了
解决方案 »
- js如何将excel生成的图表chart导出并显示在网页上
- 急!急!急!求一个JS正则表达式!
- 窗口弹出问题!高分送上,马上结贴~~~~~~~~~~~
- 问个RegisterStartupScript的问题
- 请问如果用javascript弹出像VB那样的公共对话框来选择文件?
- 我的VML怎么显示不出来?
- 静态网页怎么在两个页面间传递静态图片参数
- outerHTML什么情况下会失效?javascript转换成vbscript??
- 那里有javascript的语法检查工具
- 编写的jsp页面总显示 '$'未定义 是什么原因啊?为什么火狐上不会报这个错
- cnchart ,,,,,,JS 截取数据问T---续,,,,
- parseInt的问题
再次选择第二项BBBBBBBBBBB,提示AAAAAAAAAAAA
我这里没有其他的脚本错误啊
Line:54
Char:4
Error:'document.frmOrder.slnBillTo_Name.options' is null or not an object
Code:0
URL:..................
<html>
<body>
<script> function FixWidth(selectObj)
{
if (document.a !=undefined && document.b !=undefined)
RollbackWidth(document.b,document.a)
var newSelectObj = document.createElement("select"); newSelectObj = selectObj.cloneNode(true);
newSelectObj.selectedIndex = selectObj.selectedIndex;
newSelectObj.onmouseover = null; var e = selectObj;
var absTop = e.offsetTop;
var absLeft = e.offsetLeft;
while(e = e.offsetParent)
{
absTop += e.offsetTop;
absLeft += e.offsetLeft;
}
with (newSelectObj.style)
{
position = "absolute";
top = absTop + "px";
left = absLeft + "px";
width = "";
} document.a = newSelectObj;
document.b = selectObj;
var rollback = function(){ RollbackWidth(selectObj, newSelectObj); };
newSelectObj.focus();
newSelectObj.onblur = rollback;
selectObj.style.visibility = "hidden";
document.body.appendChild(newSelectObj); } function RollbackWidth(selectObj, newSelectObj)
{
selectObj.selectedIndex = newSelectObj.selectedIndex;
selectObj.style.visibility = "visible";
document.body.removeChild(newSelectObj);
document.a= undefined
} function HandleChange()
{
//alert("11111")
//alert(document.frmOrder.slnBillTo_Name.options[document.frmOrder.slnBillTo_Name.selectedIndex].text);
var sel = document.getElementById("slnBillTo_Name");
alert(sel.options[sel.selectedIndex].text);
} </script> <form METHOD="POST" NAME="frmOrder">
<SELECT NAME="slnBillTo_Name" id="slnBillTo_Name" class="smallTextNew" width=185 style="width: 185px" onmouseover='FixWidth(this)' onChange="javascript:HandleChange();">
<option value=SELECT> </option>
<option value="11"> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA </option>
<option value="22"> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB </option>
<option value="33"> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC </option>
</SELECT>
</form>
</body>
</html>
</SELECT>
<form> 最后一个<form> 标签
<form METHOD="POST" NAME="frmOrder">
<SELECT NAME=slnBillTo_Name class=smallTextNew width=185 style="width: 185px"
onmouseover='FixWidth(this)'
onChange="javascript:HandleChange();">
<option value=SELECT> </option>
<option value="11"> AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA </option>
<option value="22"> BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB </option>
<option value="33"> CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC </option>
</SELECT>
<form>〈/form〉是这个原因,呵呵
但现在的问题是,得到的结果总和选择的不一样,就是上一次选择的结果.这是一个大问题啊
{
//alert("11111")
var o=document.frmOrder.slnBillTo_Name
alert(o.options[o.selectedIndex*1+1].text);
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
<script>
function FixWidth(selectObj){
if (document.a != undefined && document.b != undefined)
RollbackWidth(document.b, document.a)
var newSelectObj = document.createElement("select");
newSelectObj = selectObj.cloneNode(true);
newSelectObj.selectedIndex = selectObj.selectedIndex;
newSelectObj.onmouseover = null;
var e = selectObj;
var absTop = e.offsetTop;
var absLeft = e.offsetLeft;
while (e = e.offsetParent) {
absTop += e.offsetTop;
absLeft += e.offsetLeft;
}
with (newSelectObj.style) {
position = "absolute";
top = absTop + "px";
left = absLeft + "px";
width = "";
}
document.a = newSelectObj;
document.b = selectObj;
var rollback = function(){
RollbackWidth(selectObj, newSelectObj);
};
newSelectObj.focus();
newSelectObj.onblur = rollback;
selectObj.style.visibility = "hidden";
document.body.appendChild(newSelectObj);
}
function RollbackWidth(selectObj, newSelectObj){
selectObj.selectedIndex = newSelectObj.selectedIndex;
selectObj.style.visibility = "visible";
document.body.removeChild(newSelectObj);
document.a = undefined
}
function HandleChange(obj){
//alert("11111")
alert(obj.options[obj.options.selectedIndex].text);
}
</script>
<form METHOD="POST" NAME="frmOrder">
<SELECT id="sel1" NAME=slnBillTo_Name class=smallTextNew width=185 style="width: 185px" onmouseover='FixWidth(this);' onchange="javascript:HandleChange(this);">
<option value=SELECT></option>
<option value="11">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA </option>
<option value="22">BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB </option>
<option value="33">CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC </option>
</SELECT>
</form>
</body>
</html>
不过看来,这个时候通过名字访问到的属性值还是旧的。
大概是在这个事件之后才真正把DOM的对象进行更新的吧。
//alert("11111")
alert(obj == document.frmOrder.slnBillTo_Name);
}
发现onchage的时候,
obj 并不等于 document.frmOrder.slnBillTo_Name;