アプリ版:「スタンプのみでお礼する」機能のリリースについて

「jquery.csv2table.js」から生成されたテーブルに「super tables」を適用したい。

csv2tablesを使用して、テーブルの作成・表示はできるのですが、一部の行と列を
固定したいと考えています。色々検索した結果、「super tables」が良いかと思い、
以下のサイトを参考にスクリプトを追加していますが、エラーが表示され、固定
された表示になりません。

以下にスクリプトの情報等を記載します。書き方がそもそも間違っている等、
ご教示下さい。よろしくお願いします。

<参考にしたサイト>
http://c-brains.jp/blog/wsg/09/06/16-151445.php

<IE8のエラーメッセージ>
Web ページ エラーの詳細
ユーザー エージェント: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C)
タイムスタンプ: Sun, 29 Aug 2010 14:44:55 UTC
メッセージ: 'this.sDataTable.tBodies.0' は Null またはオブジェクトではありません。
superTables.js ライン: 92
文字: 3
コード: 0

<HTML・スクリプト>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<link rel="stylesheet" href="./css/superTables.css" type="text/css" />

<script type="text/javascript" src="./js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="./js/jquery.csv2table.js"></script>
<script type="text/javascript" src="./js/superTables.js"></script>
<script type="text/javascript">
$(function(){
$('#view1').csv2table('./test.csv');
});
</script>

<style type="text/css">
.fakeContainer {
margin: 0 0 20px;
width: 600px;
height: 200px;
overflow: hidden;
}
</style>
</head>
<body>

<div id="view1" class="fakeContainer"></div>

<script type="text/javascript">
//<![CDATA[
(function () {
new superTable("view1", {
cssSkin : "sDefault",
headerRows : 1,
fixedCols : 3
});
})();
//]]>
</script>

</body>
</html>

<test.csvの内容>
No,項目1,項目2,項目3,項目4,項目5,項目6,項目7,項目8,項目9,項目10
1,,,,,,,,,,
2,,,,,,,,,,
3,,,,,,,,,,
4,,,,,,,,,,
5,,,,,,,,,,
6,,,,,,,,,,
7,,,,,,,,,,
8,,,,,,,,,,
9,,,,,,,,,,
10,,,,,,,,,,
11,,,,,,,,,,
12,,,,,,,,,,
13,,,,,,,,,,
14,,,,,,,,,,
15,,,,,,,,,,
16,,,,,,,,,,
17,,,,,,,,,,
18,,,,,,,,,,
19,,,,,,,,,,
20,,,,,,,,,,

A 回答 (1件)

csv2table、superTableはおろかjqueryも殆ど触ったことがないので参考程度にしてください。


superTableの第一引数はtable要素のidを指定しないといけないのではないかと思います。
で、csv2tableで作られたtableにはidが設定されていません。
ですので自分で設定しなければいけないようです。
また、確実にcsv2tableでtableが作成された後にsuperTableの処理が動くように
onloadを使わないといけないのかなと思います。

正しいやり方かわかりませんが、
csv2table.jsに
var tableHtm=$.csv2table._doc.getElementById(id).innerHTML="<table>"+htm+"</table>";
というようなコードがあると思いますので、これを
var tableHtm=$.csv2table._doc.getElementById(id).innerHTML="<table id='"+op.tableId+"'>"+htm+"</table>";
に変更しtableのIDを設定できるようにします。
そして、
om7700さんのソースコードの
$('#view1').csv2table('./test.csv');

$('#view1').csv2table('./test.csv',
{tableId : 'hoge'
,onload : function(id,op,data,array) {
new superTable("hoge", {
cssSkin : "sDefault",
headerRows : 1,
fixedCols : 3
});
}
});
と変更してtableにIDを設定し、tableが出来上がったあとにsuperTableの処理が動くようにします。
IE8ではとりあえず動きました。
    • good
    • 0
この回答へのお礼

yamada_g様。

示された通りに修正したところ、期待通りの動作となりました。Javascriptは勉強を始めたばかりで「csv2table.js」自体のソースを確認するということまで考えがおよびませんでした。もっと勉強してyamada_g様のような考え方ができるようになれたらと思います。

本当に助かりました。ありがとうございます。

お礼日時:2010/08/30 22:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!