日期:2014-05-16  浏览次数:20474 次

因表单中的元素不确定,用document.form1.XXX.value取值提示错误。
这个可能不是很好说明,我尽量用易懂的语言来表述。


首先表单form1里有个元素是用ajax加载进来的,所以不一定存在。


例如下面这个例子,要求如下:

1.打开页面后,客户要求宽(width)和高(hight)是必选的,所以2个input框打开页面即存在

2.颜色(color)非必选,当用户触发某一事件时,加载进div的id="color"的位置,不具体叙述。

3.要求点击提交的按钮(其实是将一个图片做成了按钮的样子,并非button元素)时,页面不刷新



代码如下



<form name="form1" type="text" >

<div color="color"><input name="color" type="text" ></div>

<input name="hight" type="text" >
<input name="width" >
<img src="images/像提交按钮的一个图片.png" onclick="startRequest('提交','提交.php?width='+document.form1.width.value+'&hight='+document.form1.hight.value+'&color='+document.form1.color.value+');">


<div id="提交">提交成功后,提交.php返回的内容在这里输出</div>

</form>



 

看明白了么?

那个提交按钮就是一个image,onclick后调用了一个万用ajax.js文件。实现页面不刷新提交。





最后阐述一下问题,图片的onclick事件被触发后,用javascript调用了3次,取得input框的值(width、higth、color),

如果说<input name="color">这个元素被加载进页面,则程序执行正常;

如果说<input name="color">这个元素没有被加载进页面,则点击image时,屏幕左下角会出现一个小叹号提示脚本错误(消息: 'document.form1.color.value' 为空或不是对象)



请问怎样才能在没有color输入框的时候,image的onclick事件触发时使网页不报错,并且使document.form1.color.value获取的值为0,或者为空呢?









------解决方案--------------------
这样吧。把document.form1.color.value
改为:(document.form1.color==null?"":document.form1.color.value)这样不就解决了。
------解决方案--------------------
HTML code
<img src="images/像提交按钮的一个图片.png" onclick="startRequest('提交',getParams());">
<script type="text/javascript">
function getParams(){
    var params="提交.php?width="+getVal('width');
    params+='&height='+getVal('height');
    params+='&color='+getVal('color');
    //还有就继续加
    return params;
}
function getVal(a){
    var o=document.getElementsByName(a)[0];
    return o?o.value:"";
}
</script>