当前位置: 代码迷 >> Java Web开发 >> onchange(this)在jsp里,如何把这个this传到另1个js文件里去
  详细解决方案

onchange(this)在jsp里,如何把这个this传到另1个js文件里去

热度:10152   发布时间:2013-02-25 21:07:53.0
onchange(this)在jsp里,怎么把这个this传到另1个js文件里去?
jsp里的js代码如下:


<script type="text/javascript" src="js/FirewallConf/Add_plan.js"></script>
<body>
<select id="comb_res_addr" style="width:100px;" onchange="onchange_addr(this)">
  <option value="res_addr">源</option>
  <option value="res_addr_domain">源段</option>
</select>
<input type="text" style="width:100px;" id='txt_res_ip1' value="">
<input type="text" style="width:100px;" id='txt_res_ip2' value="">
</body>


Add_plan.js的代码如下:

function onchange_addr(obj){
if($(obj).val() == "res_addr")
  $(obj).siblings("input[id=txt_res_ip2]").attr("disabled","true");
}


现在onchange函数我放到了Add_plan.js里,当在jsp里点击select选择其他值时,报找不到对象,也就是说找不到那个this。

请问怎么把html里的this,传到另一个js里?
------最佳解决方案--------------------------------------------------------
~~缺少对象不会是指没有onchange_addr这个方法吧。。。
js路径没错???

你试着在js文件里写个
$(document).ready(function() {
   alert(1)
});
看会不会有alert啊~
------其他解决方案--------------------------------------------------------
看清楚下js的文件都引入了吗。地址都正确了吗。代码是没有问题的
------其他解决方案--------------------------------------------------------
就这么传,只是你JS里的写的有问题.obj是个对象,$(obj)这是个什么东西?jQuery没这功能...

function onchange_addr(obj){ 
  if(obj.value == "res_addr"){
     alert('可以取到值'); 
  }


或者你非得一定想传this,一定要这么写

function onchange_addr(obj){ 
  var objId = obj.id;
  if($(#objId).val() == "res_addr"){
    $(#objId).siblings("input[id=txt_res_ip2]").attr("disabled","true"); } 
  }

------其他解决方案--------------------------------------------------------
我之前把javascript放在jsp里时,就用的$(obj),没问题。

现在把js代码单独拿出来,jsp里的onchange(this)就报找不到对象了。说明this这个jsp里的对象没传给js里的onchange函数
------其他解决方案--------------------------------------------------------
引用:
我之前把javascript放在jsp里时,就用的$(obj),没问题。

现在把js代码单独拿出来,jsp里的onchange(this)就报找不到对象了。说明this这个jsp里的对象没传给js里的onchange函数


+1,
我反正是这样写的,LZ!
------其他解决方案--------------------------------------------------------
又试了一遍,把js里的代码原封不动放回jsp里就没问题了。

那么jsp里<select id="comb_res_addr" style="width:100px;" onchange="onchange_addr(this)">这句话里面的this,怎么传给js里面的onchange_addr(obj)函数呢?

注:如果把js和jsp放一起是可以传this的,分开就不行了
------其他解决方案--------------------------------------------------------
报找不到对象???具体怎么报出来的能贴出来看看么?
因为就算obj是undefined,对$(obj)操作也不会报错的。
------其他解决方案--------------------------------------------------------
我是在IE的开发人员工具里(按F12)里看到的,控制台报的jsp页面上<select id="comb_res_addr" style="width:100px;" onchange="onchange_addr(this)">这一行缺少对象。

这行里的对象就一个this,而且js和jsp放一起时没问题的。所以我怀疑是jsp调用js里的onchange_addr函数时,函数的参数不认this这个对象。
------其他解决方案--------------------------------------------------------
楼上2位都是高手,我把onchange_conf放到$(document).ready(function()外面就行了。放到里面是不是就只在页面加载时执行,加载后就没有了。所以找不到onchange_conf这个对象了。