2011-01-18 7 views
2

私はチュートリアルに従いました/コードを変更して、IBM Cognos(BIソフトウェア)で動作するjavascriptタグクラウドを取得しました。JavaScript Cognosを使用したクラウド・タグ・クラウド - IEがnullであるかオブジェクトなし

「メッセージ: 『1』はnullまたはオブジェクトではありません」

これが存在している225であるコードの行タグクラウドは、私はエラーを取得するFirefoxのではなく、Internet Explorerで正常に動作します:

var B = b[1].toLowerCase(); 

私が見てきたさまざまなソリューションを試みたが、これは正しく動作して取得することができませんでした、次のようにコードの残りの部分は次のとおりです。

<script> 
// JavaScript Document 
// ==================================== 
// params that might need changin. 
// DON'T forget to include a drill url in the href section below (see ###) if you want this report to be drillable 
var delimit = "|"; 
var subdelimit = "[]"; // change this as needed (ex: Smith, Michael[]$500,000.00|) 
var labelColumnNumber = 0; // first column is 0 
var valueColumnNumber = 1; 
var columnCount = 2; // how many columns are there in the list? 
// ==================================== 

/* 
function formatCurrency(num) { 
num = num.toString().replace(/\$|\,/g,''); 
if(isNaN(num)) 
num = "0"; 
sign = (num == (num = Math.abs(num))); 
num = Math.floor(num*100+0.50000000001); 
cents = num%100; 
num = Math.floor(num/100).toString(); 
if(cents<10) 
cents = "0" + cents; 
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) 
num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3)); 
return (((sign)?'':'-') + '$' + num + '.' + cents); 
} 
*/ 
function formatCurrency(num) { 
num = num.toString().replace(/\$|\,/g,''); 
if(isNaN(num)) 
num = "0"; 
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) 
num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3)); 
return (num); 
} 

function filterNum(str) { 
re = /\$|,|@|#|~|`|\%|\*|\^|\&|\(|\)|\+|\=|\[|\-|\_|\]|\[|\}|\{|\;|\:|\'|\"|\<|\>|\?|\||\\|\!|\$|/g; 
// remove special characters like "$" and "," etc... 
return str.replace(re, ""); 
} 


table = document.getElementById("dg"); 

if (table.style.visibility != 'hidden'){ //only for visible 
/*alert('Visible');*/ 

tags = document.getElementById("dg").getElementsByTagName("SPAN"); 


txt = ""; 
var newText = "a"; 
    for (var i=columnCount; i<tags.length; i++) { 
/* 
valu = filterNum(tags[i+valueColumnNumber].innerHTML); 
txt += valu; 
txt += subdelimit+tags[i+labelColumnNumber].innerHTML+delimit; 
i = i+columnCount; 
*/ 
     if(i%2!=0){ 
      var newValue = filterNum(tags[i].innerHTML); 
     }else var newName =tags[i].innerHTML; 

       if((i>2) & (i%2!=0)){ 
        newText = newText+newValue+subdelimit+newName+delimit; 
         if(typeof newText != 'undefined'){ 
          txt = newText; 
          txt = txt.substr(9); 
        /*  alert(txt);*/ 
         } 
       } 
    } 

}/*else alert ('Hidden');*/ 

function getFontSize(min,max,val) { 
return Math.round((150.0*(1.0+(1.5*val-max/2)/max))); 
} 

function generateCloud(txt) { 
//var txt = "48.1[]Google|28.1[]Yahoo!|10.5[]Live/MSN|4.9[]Ask|5[]AOL"; 
var logarithmic = false; 
var lines = txt.split(delimit); 
var min = 10000000000; 
var max = 0; 
for(var i=0;i<lines.length;i++) { 
var line = lines[i]; 
var data = line.split(subdelimit); 
if(data.length != 2) { 
lines.splice(i,1); 
continue; 
} 
data[0] = parseFloat(data[0]); 
lines[i] = data; 
if(data[0] > max) 
max = data[0]; 
if(data[0] < min) 
min = data[0]; 
}lines.sort(function (a,b) { 
var A = a[1].toLowerCase(); 
var B = b[1].toLowerCase(); 
return A>B ? 1 : (A<B ? -1 : 0); 
}); 

var html = "<style type='text/css'>#jscloud a:hover { text-decoration: underline; }</style> <div id='jscloud'>"; 
if(logarithmic) { 
max = Math.log(max); 
min = Math.log(min); 
} 
for(var i=0;i<lines.length;i++) { 
var val = lines[i][0]; 
if(logarithmic) val = Math.log(val); 
var fsize = getFontSize(min,max,val); 
dollar = formatCurrency(lines[i][0]); 
html += " <a href='###Some drillthrough url which includes the param "+lines[i][1]+"' style='font-size:"+fsize+"%;' title='"+dollar+"'>"+lines[i][1]+"</a> "; 
} 
html += "</div>"; 
var cloud = document.getElementById("cloud"); 
cloud.innerHTML = html; 
var cloudhtml = document.getElementById("cloudhtml"); 
cloudhtml.value = html; 
} 
function setClass(layer,cls) { 
layer.setAttribute("class",cls); 
layer.setAttribute("className",cls); 
} 
function show(display) { 
var cloud = document.getElementById("cloud"); 
var cloudhtml = document.getElementById("cloudhtml");if(display == "cloud") { 
setClass(cloud,"visible"); 
setClass(cloudhtml,"hidden"); 
} 
else if(display == "html") { 
setClass(cloud,"hidden"); 
setClass(cloudhtml,"visible"); 
} 
} 
generateCloud(txt); 
</script> 

任意の時間

答えて

0

申し訳ありませんが、[]とb []がどこに定義されているのか分かりませんが、これは他の場所で行われていますか? FirefoxとIEは、未定義の配列の問題と異なる応答をしている可能性があります。

+0

今は気になりません。 a/bが1文字長い場合はありますか? a [1]とb [1]は文字列の2番目の文字を取得しています。なぜそれが欲しいのか分かりません。あなたのソートで一文字の「行」をヒットすると、それが邪魔になることがあります(また、ブラウザによって異なる)。 – rossdavidh

関連する問題