如标题所示,当我尝试获取元素的id属性时,我会继续获得“未定义”,基本上我想要做的是在值为“other”时用输入框替换元素.
这是代码:
function showHideOther(obj){ var sel = obj.options[obj.selectedIndex].value; var ID = $(this).attr("id"); alert(ID); if(sel=='other'){ $(this).html("<input type='text' name='" + ID + "' id='" + ID + "' />"); }else{ $(this).css({'display' : 'none'}); } }
HTML:
<span class='left'><label for='race'>Race: </label></span> <span class='right'><select name='race' id='race' onchange='showHideOther(this);'> <option>Select one</option> <option>one</option> <option>two</option> <option>three</option> <option value="other">Other</option> </select> </span>
这可能是我没有注意到的小事情,我做错了什么?
Thanx提前!
解决方法
由于调用函数的方式(即作为对函数变量的简单调用),这是全局对象(浏览器中的哪个窗口是别名).改用obj参数.
此外,创建一个jQuery对象和使用它的attr()方法来获取元素ID是低效和不必要的.只需使用元素的id属性,该属性适用于所有浏览器.
function showHideOther(obj){ var sel = obj.options[obj.selectedIndex].value; var ID = obj.id; if (sel == 'other') { $(obj).html("<input type='text' name='" + ID + "' id='" + ID + "' />"); } else { $(obj).css({'display' : 'none'}); } }