2014-02-28 63 views
1

我想寫一個簡單的函數來避免代碼的複製並從輸入中返回一個值,但是當我嘗試通過函數返回它時,我只是得到「undefined」。javascript - 使用函數返回值

任何想法爲什麼?

function get_selected_id() { 
    return $(this).parents("tr").find("input[name*=page_id]").val(); 
} 

$("a").click(function(e) { 
    e.preventDefault(); 
    alert(get_selected_id()); // RETURNS UNDEFINED 
    alert($(this).parents("tr").find("input[name*=page_id]").val()); // RETURNS 123 
}); 

HTML(非常簡化):

<table> 
    <tr> 
     <td>page id <input type="hidden" value="123" name="page_id[]" /></td> 
     <td><a href="#">Click</a></td> 
    </tr> 
</table> 

回答

1

你不值傳遞給get_selected_id()。所以當函數試圖返回$(this)時,它是未定義的,因爲它不能匹配任何元素。您必須將點擊的元素作爲參數傳遞!

嘗試

function get_selected_id(e) { 
    return e.parents("tr").find("input[name*=page_id]").val(); 
} 

$("a").click(function(e) { 
    e.preventDefault(); 
    alert(get_selected_id($(this))); // RETURNS 123 
    alert($(this).parents("tr").find("input[name*=page_id]").val()); // RETURNS 123 
}); 

DEMO

0

在JavaScript這關鍵字是上下文相關的。

試圖通過$(本)作爲參數傳遞給你的函數:

function get_selected_id(obj) { 
    return obj.parents("tr").find("input[name*=page_id]").val(); 
} 

alert(get_selected_id($(this)));