那里有JavaScript专家的问题。我有一个SCORM(电子学习内容包),它在JavaScript中的一个非常具体的点上失败了。我已经设置了日志记录以查看它失败的位置,并且它实际上在我的一个日志中失败,因此就好像将对象转换为字符串一样会导致问题。我在这里错过了什么吗?
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基本上看起来像下面这样。
undefined true true false 90 100 -1 -1 522 1 false 1 0 0 1 0 1 1 0 1 1 1 1 0 0 0 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 0 1 1 1 1 1 0 0 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
谢谢, 标记
答案 0 :(得分: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/>”);