2013-11-26 54 views
0

下面的腳本返回一個錯誤:獲取「event.target.id」作爲字符串

"Uncaught TypeError: Object Reg_8712 has no method 'indexof' 

Reg_8712是單選按鈕ID是誰開的事件。

腳本:

$("input:radio").change(function (event) {    

      alert(event.target.id); // this works! it returns it as string. 
      var eti = event.target.id; // 'eti' gets the object and not the string. 
      var n = eti.indexof("_"); // error! cannot indexof ('eti' is an object and not string) 
      var fid = eti.substring(n); 

我怎樣才能獲得 'ETI' 作爲字符串?

+7

方法名稱是'indexOf'(注意大寫字母O)。 –

+1

邁克已經給出瞭解決方案,但如果你需要字符串強制轉換:'eti = String(event.target.id)'或者快速版本'eti = event.target.id +''' – TecHunter

+0

謝謝Mike!它現在正在工作! – Eyal

回答

3

萬一出的確不是一個字符串,最簡單的方式轉換爲使用泛型.toString()方法:

var eti = event.target.id.toString(); 
var n = eti.indexOf("_"); 

Simple test case來證明這一點。

+0

if event.target.id爲空。更簡單的方法是使用'String(event.target.id' no? – TecHunter

+1

@TecHunter不是真的。考慮[this](http://jsfiddle.net/EPx2s/1/):JavaScript會將null轉換爲「null」。不是一個好主意,如果有空值的機會,自定義函數在我看來是最好的,例如[this fiddle contains one](http://jsfiddle.net/EPx2s/2/) –

+0

不錯! – TecHunter