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函数
------其他解决方案--------------------------------------------------------
+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这个对象了。