javascript:无法将值传递给隐藏标记或文本提醒

时间:2009-05-20 16:44:16

标签: javascript

我有一个html文件,它将值传递到java servlet以插入数据库。这是我的代码:

<html>
<head>
<script type="text/javascript">
function masinsert(id)
{
 var currentTime=new Date();


 var button = document.getElementById("m"+id);
 button.onclick="";
 button.value="Inserting";

 var partnumber     = document.getElementById("partnumber"+id).value;
 var itemcost       = document.getElementById("itemcost"+id).value;
 var itemlistprice  = document.getElementById("itemlistprice"+id).value;
 var sUnitMeasKey   = document.getElementById("UnitMeasKey"+id);
 var sPurchProdLine     = document.getElementById("PurchProdLine"+id);
 var sItemClassKey  = document.getElementById("itemclasskey"+id);

 var UMKselected = getSelected(sUnitMeasKey);
 var PPLselected = getSelected(sPurchProdLine);
 var ICKselected = getSelected(sItemClassKey);

 function handleHttpResponse()
  {
   if (http.readyState == 4) {
    button.value="Imported";
   }
  }


 var http = getHTTPObject(); // We create the HTTP Object
 var tempUrl = "\MASInsert2";
 tempUrl +=  "?partnumber="+partnumber+"&"+"itemcost="+itemcost+"&"+"itemlistprice="+itemlistprice+"&"+"UnitMeasure="+UMKselected+"&"+"PurchProdLine="+PPLselected+"&"+"itemclasskey="+ICKselected;
  alert(tempUrl);
 http.open("POST", tempUrl, true);
 http.onreadystatechange = handleHttpResponse;
 http.send(null);   
}


function getSelected(ele)
{
    return ele.options[ele.selectedIndex].value;
}

function getHTTPObject(){
 var xmlhttp;
 /*@cc_on
 @if (@_jscript_version >= 5)
   try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   }catch (e){
    try {
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
     }catch (E) {
      xmlhttp = false;
      }
  }
  @else
  xmlhttp = false;
  @end @*/
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      xmlhttp = false;
    }
  }
  return xmlhttp;
 }
</script>
</head>
<body>

<form name=bob method=get>
<input type=hidden id="partnumber321" name="partnumber321" value="884910U">
<input type=hidden id="itemcost321" name="itemcost321" value="1027.39">
<input type=hidden id="itemlistprice321" name="itemlistprice321" value="1129.0">
<input type=hidden id="itemdescription321" name="itemdescription321" value="XSERIES 306M SS P4 3.0GHZ 1MB">
<select id="UnitMeasKey321" name="UnitMeasKey321"><option value="112">Each</select>
<select id="PurchProdLine321" name="PurchProdLine321"><option value="18">IBM</select>
<select id="itemclasskey321" name="itemclasskey321"><option value="48">Hardware</select>
<input id="m321" type="button" onclick="masinsert('321')" value="Add">
</form>
</body>
</html>

当我点击按钮时,警报(partnumber)返回null(firefox)或对象(IE)。我是否错误地传递了这些值以供servlet处理?有什么想法吗?它不应该返回值吗?

提前致谢

3 个答案:

答案 0 :(得分:3)

Firefox返回null,因为该名称没有ID。如果您不想为输入分配ID,请致电GetElementByName

IE正在返回一个对象,因为DOM元素是对象。您需要检查其中一个属性(最有可能value),以查看它实际设置的内容。

IE不应该返回一个对象,但天真地认为GetElementByIdGetElementByName相同。

答案 1 :(得分:1)

经典IE错误 ID vs. Name 。您将需要指定和使用id属性,或使用getElementsByName(请注意它将返回匹配的“set”)或form.elements [nameOrIndex]格式。

e.g。

alert(document.forms[myFormNameOrIndex].elements[myElementNameOrIndex].value);

答案 2 :(得分:0)

我看到三件奇怪的事情(可能还有问题):

  1. 你如何设置id“partnumber”? IE给你一个对象似乎你只设置了输入框的name属性,而不是id属性。
  2. 您必须获取这些属性的值才能构建网址:partnumber.value
  3. 您正在使用GET方法进行插入操作。这应该是POST