2011-07-12 33 views
4

我用下面的JavaScript代碼收到此錯誤:JavaScript錯誤:無法轉換對象原始值

function tempTest(evt) { 
    alert(evt.currentTarget.id); 
    ct = document.getElementById(evt.currentTarget.id); 
    rslt = document.getElementById('rslt'); 
    var props; 
    for (var prop in ct) { 
     if (ct.hasOwnProperty(prop)) { 
      propVal = ct[prop]; 
      var propDat = prop + ' = ' + propVal; 
      props += propDat + '<br/>'; 
     } 
    } 
    rslt.innerHTML = props; 
} 

這其中有我的疑惑。有任何想法嗎?

+0

哪條線有錯誤? – lincolnk

+0

var propDat = prop +'='+ propVal; – Eric

+0

同樣的錯誤,如果我把它描述爲:var propDat = prop +'='+ ct [prop];和溝propVal。 – Eric

回答

3

並非HTML元素的所有屬性都是基元。例如,父母,孩子等也是HTML元素。你不能只用它們作爲字符串或數字。
您需要添加一個條件並相應地使用該屬性。

+1

謝謝。我能夠添加一個條件來檢查字符串值並採取行動。這對我正在處理的這段代碼來說已經足夠了。 – Eric

0

問題在於代碼的propVal部分。因爲這可能不會被轉換成字符串。

1

(該任擇議定書:)

Just wanted to post the updated snippet for anyone who stumbles onto this post...

function tempTest(evt) { 
    alert(evt.currentTarget.id); 
    ct = document.getElementById(evt.currentTarget.id); 
    rslt = document.getElementById('rslt'); 
    var props; 
    for (var prop in ct) { 
     if (ct.hasOwnProperty(prop)) { 
      var propVal = ct[prop]; 
      props += prop + ' (' + typeof(prop) + ')' + ' = '; 
      if (typeof(ct[prop]) == 'string') { 
       propVal += ct[prop]; 
      } else { 
       if (propVal != null && propVal.toString) { 
        props += propVal.toString(); 
       } else {} 
      } 
      props += '<br/>'; 
     } 
    } 
    rslt.innerHTML = props; 
} 
1

如果有問題的對象是JSON,你可以調用JSON.stringify(thingThatIsJson)這將返回一個字符串。 .toString()在json上不起作用。

這是給你們那些處理諸如req.body這樣的事情的消息,它們將在console.log()中工作,這很容易混淆,因爲它可能不像String那樣行爲(就像你試圖將它添加到另一個String中一樣)。

相關問題