2014-01-21 46 views
0

JavaScript專家的問題在那裏。我有一個SCORM(電子學習內容包),它在JavaScript中非常特殊的地方失敗了。我已經設置了日誌記錄來查看它失敗的位置,並且它實際上在我的一個日誌中失敗,因此它將對象轉換爲字符串會導致問題。我在這裏錯過了什麼嗎?JavaScript停止在ToString

var w = window.open("", "popupWindow", "width=600, height=400, scrollbars=yes"); 
var $w = $(w.document.body); 

function writelog(s){ 
    $w.append(s); 
} 


function SCOSetValue(nam,val){ 
    writelog("in SCOSetValue"); 
    writelog("name is "+nam.toString()); 
    writelog("value is "+val.toString()); 
    writelog("<br/>」); 
... 

在行val.toString() JS剛剛停止。任何人都知道發生了什麼事? val基本上看起來像下面這樣。 未定義true true false 90 100 -1 -1 522 1 false 1 0 0 1 0 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1個1 1 1 1 1 1 1

謝謝, 馬克

+1

控制檯中報告的任何錯誤? –

+4

那麼如果'val'可以是'undefined'(這是我從你的問題的末尾理解的......),你不能調用'undefined.toString()'。 – Vache

+0

解析器拋出的具體錯誤是什麼? val很可能是null或undefined導致ReferenceError或TypeError被拋出...... –

回答

2

你想使用的任何時間值應該檢查以確保它們存在。

function SCOSetValue(nam,val){ 

    nam = (typeof nam !== "undefined") ? nam : "nam not defined"; 
    val = (typeof val !== "undefined") ? val : "val not defined"; 

    writelog("in SCOSetValue"); 
    writelog("name is "+nam.toString()); 
    writelog("value is "+val.toString()); 
    writelog("<br/>」); 

另外,如果你想保存自己不必toString()所有的時間寫的,只是添加+ ""的變量。它強制它爲一個字符串。

function SCOSetValue(nam,val){ 

    nam = (typeof nam !== "undefined") ? nam + "" : "nam not defined"; 
    val = (typeof val !== "undefined") ? val + "" : "val not defined"; 

    writelog("in SCOSetValue"); 
    writelog("name is "+nam); 
    writelog("value is "+val); 
    writelog("<br/>」);