• ベストアンサー

ジャバスクリプトのエラーを直したい

趣味で準備中のブログを表示すると、 「ページでエラーが発生しました。」と出るようになってしまいました。 ダブルクリック後に出てくる表示が、 ライン:172 文字:2 エラー:オブジェクトがありません。 コード:0 URL:http://○○○.com とあり、firefoxのエラーコンソールから見てみると、 「list is null」で、171行目が表示されていました。 何かが空になっているとか、そんな意味だと思うのですが、 文のどこが変なのかサッパリ分からない状態です。 以下が、構文の前後です。 setStyle = function(element, key, value) { element.style[key] = value; } getStyle = function(element, key) { return element.style[key]; } cleanWhitespace = function(list) { var node = list.firstChild;  【←この行が変みたいです。】 while (node) { var nextNode = node.nextSibling; if(node.nodeType == 3 && !/\S/.test(node.nodeValue)) { list.removeChild(node); } node = nextNode; } return list; } 分かる方、いらっしゃったら教えていただけると幸いです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

ご提示のものだけでは不十分です。 (かといって、170行を掲示されても見る人はいないかも…) ご提示の部分は、list(という名前の変数で指示される)要素の中で、改行など以外のテキスト要素を削除して返すというファンクションです。 呼び出し元でこの引数に、空の要素や要素以外のオブジェクトを渡しているためにエラーになっていると推測されます。 それなので、エラーの発生はご提示の部分で起こっていますが、その原因は呼び出し側にあると思われるので、そこを正しく修正しない限り根本的な修正にはなりません。 単に、その部分のエラーを出なくするだけなら、  if (list.nodeType == 1) { ~~ のように、listが単独要素でない場合はスルーするようにしてしまえば、多分可能ではないかと思いますが(要素以外のオブジェクトの場合は、nodeTypeはundefinedを返す)、その場合に本来の機能が正しく働くのかどうかは元の機能が不明のため、まったくわかりません。

toma39
質問者

補足

ご回答ありがとうございます。 なるほど、他の部分が変なのですね・・。 そのことが分かっただけでも、とても助かります。 if(list.nodeType=1・・のアイデアは、 どうしても改善しないときに、試してみようと思います。 助け船だしてくれる方が いるかもしれないので、一応、分割して(文字数 が多くて載らないため)掲示してみます。 /* Author: ○○ Update: ○○ Author URI: ○○ */ (function() { var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } } var GhostlyMenu = Class.create(); GhostlyMenu.prototype = { initialize: function(target, align, opacity, offset) { this.obj = cleanWhitespace(target); this.align = align || 'left'; this.opacity = 0; this.maxopacity = opacity || 1; this.offset = offset || 0; this.menu = this.obj.childNodes if (this.menu.length < 2) { return; } this.title = this.menu[0]; this.body = this.menu[1]; cleanWhitespace(this.body).firstChild.className = 'first'; if (/MSIE/i.test(navigator.userAgent)) { var readers = getElementsByClassName('reader', 'a', this.body); for (var i = 0; i < readers.length; i++) { setStyle(readers[i], 'cursor', 'hand'); } } setStyle(this.body, 'visibility', 'hidden'); setStyle(this.body, 'position', 'absolute'); setStyle(this.body, 'overflow', 'hidden'); setStyle(this.body, 'display', 'block'); addListener(this.obj, 'mouseover', bind(this, this.activate), false); addListener(this.obj, 'mouseout', bind(this, this.deactivate), false); }, activate: function() { var pos = cumulativeOffset(this.title); var left = pos[0]; if (this.align == 'right') { var offset = getWidth(this.title) - getWidth(this.body) + this.offset; left += offset; } var top = pos[1] + getHeight(this.title); setStyle(this.body, 'left', left + 'px'); setStyle(this.body, 'top', top + 'px'); setStyle(this.body, 'visibility', 'visible'); setStyle(this.body, 'opacity', this.opacity); setStyle(this.body, 'MozOpacity', this.opacity); setStyle(this.body, 'KhtmlOpacity', this.opacity); setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')'); if(this.tid) { clearTimeout(this.tid); } this.tid = setInterval(bind(this, this.appear), 30); }, deactivate: function(){ if(this.tid) { clearTimeout(this.tid); } this.tid = setInterval(bind(this, this.fade), 30); }, 続く

その他の回答 (3)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.4

#1です。 長いのまで解析する気にはなれないけど、前の回答で肝心の「null」を忘れていましたので、訂正を… ( ←アホですね )  list.nodeType == 1 だと、肝心のnullのときにはエラーになるので  list && list.nodeType == 1 しゃないとダメですね。 失礼しました。

toma39
質問者

補足

確かに、長すぎますよね・・。 回答補足ありがとうございます。 でも、 list && list.nodeType == 1 を、 どこに書いたら良いのかが分からなかったりもします・・。 cleanWhitespace = function(list) { var node = list.firstChild;  【←この行が変みたいです。】 while (node) { var nextNode = node.nextSibling; if(node.nodeType == 3 && !/\S/.test(node.nodeValue)) { list.removeChild(node); } の最後あたりに、こっそり入れておけば何とかなるのかな・・。 色々試してみます。

回答No.3

ぶんかつしやすいように。その2

toma39
質問者

補足

再び、ありがとうございます><。 続き addListener = function(element, name, observer, useCapture) { if(element.addEventListener) { element.addEventListener(name, observer, useCapture); } else if(element.attachEvent) { element.attachEvent('on' + name, observer); } } function loadMenus() { var subscribe = $('subscribe'); new GhostlyMenu(subscribe, 'left', 1, 1); var menubar = $('menus'); var list = cleanWhitespace(menubar.childNodes); for (var i = 0; i < list.length; i++) { new GhostlyMenu(list[i], 'left', 1, 1); } } if (document.addEventListener) { document.addEventListener("DOMContentLoaded", loadMenus, false); } else if (/MSIE/i.test(navigator.userAgent)) { document.write('<script id="__ie_onload_for_inove" defer src="javascript:void(0)"></script>'); var script = $('__ie_onload_for_inove'); script.onreadystatechange = function() { if (this.readyState == 'complete') { loadMenus(); } } } else if (/WebKit/i.test(navigator.userAgent)) { var _timer = setInterval( function() { if (/loaded|complete/.test(document.readyState)) { clearInterval(_timer); loadMenus(); } }, 10); } else { window.onload = function(e) { loadMenus(); } } window['MGJS_MENU'] = {}; })(); 以上です。長すぎて、すみません・・

回答No.2

ぶんかつしやすいように。その1 (べつにかいとうするすわけではありません)

toma39
質問者

補足

助かります><。2回補足できないのですね><。 続き。 appear: function() { this.opacity += 0.1; if(this.opacity >= this.maxopacity) { this.opacity = this.maxopacity; clearTimeout(this.tid); } setStyle(this.body, 'opacity', this.opacity); setStyle(this.body, 'MozOpacity', this.opacity); setStyle(this.body, 'KhtmlOpacity', this.opacity); setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')'); }, fade:function() { this.opacity -= 0.1; if(this.opacity <= 0) { this.opacity = 0; setStyle(this.body, 'visibility', 'hidden'); clearTimeout(this.tid); } setStyle(this.body, 'opacity', this.opacity); setStyle(this.body, 'MozOpacity', this.opacity); setStyle(this.body, 'KhtmlOpacity', this.opacity); setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')'); } } $ = function(id) { return document.getElementById(id); } $A = function(iterable) { if(!iterable) { return []; } if(iterable.toArray) { return iterable.toArray(); } else { var results = []; for(var i = 0; i < iterable.length; i++) { results.push(iterable[i]); } return results; } } getElementsByClassName = function(className, tag, parent) { parent = parent || document; var allTags = (tag == '*' && parent.all) ? parent.all : parent.getElementsByTagName(tag); var matchingElements = new Array(); className = className.replace(/\-/g, '\\-'); var regex = new RegExp('(^|\\s)' + className + '(\\s|$)'); var element; for (var i = 0; i < allTags.length; i++) { element = allTags[i]; if (regex.test(element.className)) { matchingElements.push(element); } } return matchingElements; } bind = function() { var array = this.$A(arguments); var func = array[array.length - 1]; var _method = func, args = array, object = args.shift(); return function() { return _method.apply(object, args.concat(array)); } } getHeight = function(element) { return element.offsetHeight; } getWidth = function(element) { return element.offsetWidth; } setStyle = function(element, key, value) { element.style[key] = value; } getStyle = function(element, key) { return element.style[key]; } cleanWhitespace = function(list) { var node = list.firstChild;     【【ここがエラー表示】】 while (node) { var nextNode = node.nextSibling; if(node.nodeType == 3 && !/\S/.test(node.nodeValue)) { list.removeChild(node); } node = nextNode; } return list; } cumulativeOffset = function(element) { var valueT = 0, valueL = 0; do { valueT += element.offsetTop || 0; valueL += element.offsetLeft || 0; element = element.offsetParent; } while (element); return [valueL, valueT]; } 続く・・

関連するQ&A

  • is not a functionというエラー

    jqueryのスクリプトを書いていたところ $(function () { var wrapper = $("#main"); var wrapperWidth; var blocks = []; NewBlocks(blocks, wrapper.children()); function NewBlocks(blocks, elements) { for (var i = 0; i < elements.length; i++) { var element = elements[i]; var block = new Block(element); blocks.push(block) } } function Block(element) { this.element = element; element.style.margin = "10px"; this.init(); } Block.prototype = { init: function () { this.width = this.element.offsetWidth; this.height = this.element.offsetHeight; } } }); 上記スクリプトを実行すると「this.init is not a function」というエラーが出てしまいます。 一体何をどう間違っているせいでエラーが出るのか、どうかご教授いただけますでしょうか。

  • ジャバスクリプト エラーになる

    下記エラーになるのですが、宜しくお願いします・ 『利用規約に同意する』と書かれたチェックボックスにチェックを入れてある場合のみ確認のウインドウがでるという仕組みを作りたいのですが if(document.Order.elements[kiyaku_fn].value == ""){ alert("規約に同意して下さい"); return false; else if (document.Order.elements[kiyaku_fn].value == "on") return true; }

  • フォームタグのinputタグ内にカーソルを持っていくと、下記エラーとな

    フォームタグのinputタグ内にカーソルを持っていくと、下記エラーとなります。環境は、 prototype.js(1.6)×IE(8)です。FFではエラー表示となりません。 エラーの意味と対処方を教えてください。 メッセージ: オブジェクトがありません。 ライン: 3936 文字: 5 コード: 0 URI: http://ほげほげ/prototype.js ▼該当と思われる行付近 3965行 function getEventID(element) { 3969行 if (element._prototypeEventID) return element._prototypeEventID[0]; 3970行 arguments.callee.id = arguments.callee.id || 1; 3971行 return element._prototypeEventID = [++arguments.callee.id]; 3972行 }

  • 個別では動く、javascriptのエラー

    こちらで良いのか悩みましたが..... blogやHPを作った事があるというだけで、webshopの作りを友人にお願いされた初心者です。 更新履歴用にFeed2JS、商品画像を表示する為にmootools、lightbox2をお借りして 設置までは何とか行う事が出来、個別ではちゃんと動いているのですが、同じページではどちらかが動かなくなってしまいました。 ブラウザにエラーコンソールを付けてみた所、mootoolsとrssにエラーがあると表示されていて、 どの行がエラーなのかは分かりましたが、情けない話ですが何がエラーなのかが分かりません。 javascriptは見よう見まねで設置しており、コードの書き換えなどは画像サイズを変更するぐらいがやっとです。 ネットや辞書で調べてみましたが、分からないまま弄ると余計におかしな事になり、怖くなってきました。 周りに詳しい人もおらず、困ってしまいましたので、検索でみつけたこちらでお伺いする事にした次第です。 エラー表示されるのは $(document).ready( function(){ $('.rss-items').innerfade({ animationtype: 'slide', speed: 750, timeout: 6000, type: 'sequence', containerheight: '1em' }); $('ul#portfolio').innerfade({ speed: 1000, timeout: 5000, type: 'sequence', containerheight: '220px' }); $('.fade').innerfade({ speed: 1000, timeout: 6000, type: 'random_start', containerheight: '1.5em' }); $('.adi').innerfade({ speed: 'slow', timeout: 5000, type: 'random', containerheight: '150px' }); }); の3行目 $('.rss-items').innerfade({ 長いので直接アドレスを貼ります http://pretto.kilo.jp/cos-pretto/js/mootools-1.2-core.js 345行目 Fx.Slide=new Class({Extends:Fx,options:{mode:'vertical'},initialize:function(a,b){this.addEvent('complete',function(){this.open=(this.wrapper['offset'+this.layout.capitalize()]!=0);if(this.open&&Browser.Engine.webkit419)this.element.dispose().inject(this.wrapper)},true);this.element=this.subject=$(a);this.parent(b);var c=this.element.retrieve('wrapper');this.wrapper=c||new Element('div',{styles:$extend(this.element.getStyles('margin','position'),{'overflow':'hidden'})}).wraps(this.element);this.element.store('wrapper',this.wrapper).setStyle('margin',0);this.now=[];this.open=true},vertical:function(){this.margin='margin-top';this.layout='height';this.offset=this.element.offsetHeight},horizontal:function(){this.margin='margin-left';this.layout='width';this.offset=this.element.offsetWidth},set:function(a){this.element.setStyle(this.margin,a[0]);this.wrapper.setStyle(this.layout,a[1]);return this},compute:function(a,b,c){var d=[];var x=2;x.times(function(i){d[i]=Fx.compute(a[i],b[i],c)});return d},start:function(a,b){if(!this.check(arguments.callee,a,b))return this;this[b||this.options.mode]();var c=this.element.getStyle(this.margin).toInt();var d=this.wrapper.getStyle(this.layout).toInt();var e=[[c,d],[0,this.offset]];var f=[[c,d],[-this.offset,0]];var g;switch(a){case'in':g=e;break;case'out':g=f;break;case'toggle':g=(this.wrapper['offset'+this.layout.capitalize()]==0)?e:f}return this.parent(g[0],g[1])},slideIn:function(a){return this.start('in',a)},slideOut:function(a){return this.start('out',a)},hide:function(a){this[a||this.options.mode]();this.open=false;return this.set([-this.offset,0])},show:function(a){this[a||this.options.mode]();this.open=true;return this.set([0,this.offset])},toggle:function(a){return this.start('toggle',a)}}); です。 マヌケな質問かもしれませんが、参考になるページだけでも教えて頂けると凄く嬉しいです。

  • Java script エラー

    以前、質問して教えていただいたJava scriptですが、 サーバにアップしたところ Java script エラー 「pages[i].style.display = 'none';」が発生しました。 Java scriptの知識が全くない素人で申し訳ないのですが、 エラーの原因を教えていただけますでしょうか? よろしくお願いいたします。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "​http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">​ <html xmlns="​http://www.w3.org/1999/xhtml"​ xml:lang="ja" lang="ja"> <head> <title>タブ切替のサンプル</title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <script type="text/javascript"> // <![CDATA[ var tab = { peek:0, init: function(start){ var tabs = this.setup.tabs; var pages = this.setup.pages; for(var i=0; i<pages.length; i++) { if(i !== 0) pages[i].style.display = 'none'; tabs[i].onclick = function(){ tab.showpage(this); return false; }; } this.peek = start; this.showpage(tabs[this.peek]); }, showpage: function(obj){ var tabs = this.setup.tabs; var pages = this.setup.pages; var num; for(num=0; num<tabs.length; num++) { if(tabs[num] === obj) { tab.peek = num; break; } } for(var i=0; i<pages.length; i++) { if(i == num) { pages[num].style.display = 'block'; tabs[num].className = 'present'; } else{ pages[i].style.display = 'none'; tabs[i].className = null; } } } } function initialize(){ tab.setup = { tabs: document.getElementById('tab').getElementsByTagName('li'), pages: [ document.getElementById('page1'), document.getElementById('page2'), document.getElementById('page3'), document.getElementById('page4'), document.getElementById('page5') ] } tab.init(0); } function proceed(num){ if(tab.peek + num < tab.setup.tabs.length && 0 <= tab.peek + num){ tab.showpage(tab.setup.tabs[tab.peek + num]); } } // ]]> </script>

  • Javascriptリアルタイムエラーチェック

    Javascript初心者です。 本を見ながらフォームの入力値のリアルタイムエラーチェックを実装しています。 テキストフィールドへの入力値の妥当性検証はできるのですが、 チェックボックスが一つもチェックされていなかった場合にチェックボックスを囲むfieldsetを赤くさせるのがうまくいきません。 電話番号の形式指定ならば String.prototype.isZip = function(){ return this.isEmpty()||/^\d{3}-\d{4}$/.test(this); } という形です。thisはname属性を参照します。 すべての項目にエラーがない場合に確認画面へ進めるようにしています。 String.prototype.isNotEmpty = function() { return this != ''; } String.prototype.isEmpty = function(){ return this == ''; } String.prototype.isShorterThan = function(n){ return this.length<=n; } String.prototype.isLongerThan = function(n){ return this.length >= n; } String.prototype.isZip = function(){ return this.isEmpty()||/^\d{3}-\d{4}$/.test(this); } String.prototype.isPhone = function() { return this.isEmpty()||/^\d{2,4}-\d{1,4}-\d{4}$/. test(this); } String.prototype.isEmail = function() { return this.isEmpty()||/^([\w-]+\.?)+@[\w-]+(\.([\w-]+))+$/.test(this); } var formValidation = function(name, feedback, fields){ var form = document.forms[name]; for (var i=0; i<form.elements.length; i++){ (function(){ var elm = form.elements[i]; var f = fields[elm.name]; if (f){ f.element = elm; f.process = function(){ var ok = true; if (f.convert) f.element.value = f.convert(f.element.value); if (f.validation) ok = f.validation(f.element.value); if (f.feedback) f.feedback(ok, f.element); return ok; } elm.onblur = function(e){ f.process() } } })(); } form.onsubmit = function(){ var all_ok = true; for (key in fields) if (fields[key] && !fields[key].process()) all_ok = false; return feedback(all_ok); }; } </script> <script type="text/javascript"> <!-- <![CDATA[ window.onload = function(){ var fields = { 'last_name':{ convert: function(val){ return val.cnvKana('asKV').trim() }, validation: function(val){ return val.isNotEmpty() && val.isShorterThan(16) }, feedback: function(ok, elm){elm.style.border = ok ? 'solid 2px #3CB371' : 'solid 2px f57272'; } }, 'furigana':{ convert: function(val){ return val.cnvKana('sKVC').trim() }, validation: function(val){ return val.isNotEmpty() && val.isComposedOf(cs.kata.zen+cs.space.han) && val.isShorterThan(32) }, feedback: function(ok, elm){ elm.style.border = ok ? 'solid 2px #3CB371' : 'solid 2px f57272'; } }, 'phone':{ convert: function(val){ return val.cnvPhone() }, validation: function(val){ return val.isNotEmpty() && val.isPhone() }, feedback: function(ok, elm){elm.style.border = ok ? 'solid 2px #3CB371' : 'solid 2px f57272';} } 'email':{ convert: function(val){ return val.trim() }, validation: function(val){ return val.isNotEmpty() && val.isEmail() }, feedback: function(ok, elm){ elm.style.border = ok ? 'solid 2px #3CB371' : 'solid 2px f57272';}, }, }; var feedback = function(ok){ if (ok) alert("確認画面へ進みます。"); else alert("フォームの内容に不備があるようです。再度の確認をお願いいたします。") return ok; }; new formValidation('MAINFORM', feedback, fields); } // ]]> --> <form name="MAINFORM" action="check.php" method="post"> <input name="last_name" type="text"> <input name="furigana" type="text" /> ~~~~~~ <fieldset id="checkboxDemo" name="job"> <legend><img src="images/label_kozanaiyou.gif" width="92" height="18"></legend> <label for="checkbox-1" tabindex="1">オフィス(Word,Excel)</label> <input type="checkbox" name="kouza[]" id="checkbox-1" value="オフィス(Word,Excel)" /> <label for="checkbox-2" tabindex="2">ネットワーク構築</label> <input type="checkbox" name="kouza[]" id="checkbox-2" value="ネットワーク構築" /> <label for="checkbox-3" tabindex="3">WEBデザイン</label><input type="checkbox" name="kouza[]" id="checkbox-3" value="WEBデザイン" /> <label for="checkbox-4" tabindex="4">WEBプログラミング</label> <input type="checkbox" name="kouza[]" id="checkbox-4" value="WEBプログラミング" />  </fieldset> 自分で色々と試してみましたがうまくいかず、皆様のお力を借りたいと思い投稿しました。 詳しい方教えてください。

  • 「')'がありません」とスクリプトエラー

    前に作ったjavascript(現在別の箇所で活用中)を、 今回つくってる別のページに再利用しようとしたら、 「')'がありません」とスクリプトエラーになってしまいます。 いろいろコメント化したりして切り分けたところ、以下の何かが いけないようです。 「)」がないといわれても、以下のいったい何がいけないのか見当もつかないですが、 お心当たりのアドバイスがありましたら是非お願いします。 function nmck01() { var str = document.query.capacity_more.value; if( str.match( /[^0-9.]+/ ) ) { alert("不正な値がみつかりました。\n正数以外は入力できません。"); return 1; } return 0; }

  • for in と 接続演算子について

    <!-- function check(){ var flag = 0; if(document.registform.user.value==""){ flag = 1; var error1 = document.getElementById("error1"); if(error1 == null){ var element1=document.createElement("div"); element1.innerHTML='<span class="error0" id="error1">ユーザー名を入力してください。</span>'; var ojbody1=document.getElementById("td_error1"); ojbody1.appendChild(element1); } } if(document.registform.pass.value==""){ flag = 1; var error2 = document.getElementById("error2"); if(error2 == null){ var element2=document.createElement("div"); element2.innerHTML='<span class="error0" id="error2">パスワードを入力してください。</span>'; var ojbody2=document.getElementById("td_error2"); ojbody2.appendChild(element2); } } if(document.registform.pass2.value==""){ flag = 1; var error3 = document.getElementById("error3"); if(error3 == null){ var element3=document.createElement("div"); element3.innerHTML='<span class="error0" id="error3">パスワード(確認)を入力してください。</span>'; var ojbody3=document.getElementById("td_error3"); ojbody3.appendChild(element3); } } if(flag == 0){ return true; }else{ return false; } } //--> javascript初心者です。 この処理をfor(key in array)を使って簡単にできるかも... と思ったんですが接続演算子の使い方がよくわかりません。 プログラム自体初心者独学で手探りでやっているため考え方が間違っている場合などありましたらアドバイス等もいただけたらうれしいです。 if(document.registform.user(☆).value==""){ flag = 1; var error1(☆) = document.getElementById("error1(☆)"); if(error1(☆) == null){ var element1(☆)=document.createElement("div"); element1(☆).innerHTML='<span class="error0" id="error1(☆)">ユーザー名(☆)を入力してください。</span>'; var ojbody1(☆)=document.getElementById("td_error1(☆)"); ojbody1.appendChild(element1(☆)); }} (☆)のところが接続演算子が使えればと思いました。 例えばvar element + key でelement1の変数というのは無理なのでしょうか? もし可能ならgetElementById("error + key ")はどういった書き方をすればよいでしょうか? よろしくお願いします。

  • Java Scriptで・・・

    <form name="f"> <table border> <tr><td>番号</td><td>問題</td><td>解答</td><td>正誤</td></tr> <script type="text/javascript"> <!-- // 変数・関数の定義 var i, n1, n2; var s = new Array(11); // 正解を保存する配列 s[0] ~ s[10] function myrandom(n) { return Math.floor(Math.random() * n); } function check() { var i, ok=0, ng=0; for (i=1; i<=10; i++) { if (document.f.elements["s" + i].value == s[i]) { document.f.elements["c" + i].value = "○"; ok++; } else { document.f.elements["c" + i].value = "×"; ng++; } } document.f.ok.value = ok; document.f.ng.value = ng; } for(i=1; i<=10; i++){ n1 = myrandom(10) + 1; n2 = myrandom(10) + 1; s[i] = n1 + n2; document.writeln('<tr>'); document.writeln('<td>' + i + '</td>'); document.writeln('<td>' + n1 + ' + ' + n2 + ' =</td>'); document.writeln('<td><input type="text" name="s' + i + '" size="3"></td>'); document.writeln('<td><input type="text" name="c' + i + '" size="3"></td>'); document.writeln('</tr>'); } // --> </script> </table> <input type="button" value="答え合わせ" onclick="check();"> 正答数:<input type="text" name="ok" size="3"> 誤答数:<input type="text" name="ng" size="3"> </form> このようなプログラムを作ったのですが、この表示される10問が全部異なる問題となるようにするにはどうすればいいでしょうか?

  • IE6で「スクリプトのデバッグ」を使用すると文字が化けてしまいます。

    IE6で「スクリプトのデバッグ」を使用すると文字が化けてしまいます。 jQueryでサイト開発中ですが原因がわかりません。。。 デバックしますか? 行:777 エラー:終了していない文字列型の定数です。 と出てしまいます。 開発ツールでは特にエラーが出ません。。。 スクリプトのデバッグを入れなければちゃんとサイトが表示されて文字化けも起こさないのですが(汗) デバッグで引っかかるコードは次のような感じです。 var list33 = { '#load150':'abd.html', '#load552':'boko.html', '#load326':'19.html' }; jQuery.each(list33, function(key5,val7) { $(key5)load(val7,~~~ }); リストにしているところがどうしても引っかかります。 var list33 = {'#load150':'abd.html','#load552':'boko.html','#load326':'19.html'}; とするとエラーが出ないことが”多く”はなります。 ただし、このように書いてしまうとやたら長くなっていってしまいます。 改行するとエラーが出るのは何がダメなのでしょうか?

    • ベストアンサー
    • AJAX

専門家に質問してみよう