greasemonkeyでfunction動かない
greasemonkeyでスクリプトを作成したいのですが、テスト用に書いたjavascriptをぐれもんに設定したところ、スクリプトが起動しなくなりました。
※javascript、greasemonkey共に初心者です。
ご指摘いただけると幸いです。
HTML部分は、既存のサイトにつき変更できないため、ぐれもん(JS)にて、追加機能を持たせたい。
=======
作成したサンプルソース
JSで作成した、最下部の入力文字を発送日窓複数に一括反映するためのスクリプトです。
=======
<SCRIPT LANGUAGE="JavaScript">
<!--
window.onload=function(){
var myForm=document.createElement('form');
myForm.setAttribute("name","frm_test2");
var inps=new Object;
inps[0]=document.createElement('input');
inps[0].setAttribute("type","text");
inps[0].setAttribute("name","atai");
inps[0].setAttribute("value","");
inps[1]=document.createElement('input');
inps[1].setAttribute("type","button");
inps[1].setAttribute("onClick",'test()');
inps[1].setAttribute("value","実行");
for(var i in inps){
myForm.appendChild(inps[i]);
}
document.body.appendChild(myForm);
}
function test(){
num = document.rjForm2.length
for (var i=0; i<num; i++){
formname = document.rjForm2[i].name;
formname=formname.substring(0,13);
if (formname=="shipping_date"){
document.rjForm2[i].value = document.frm_test2.atai.value;
}
}
}
//-->
</SCRIPT>
<body>
<form name="rjForm2">
<table>
<tr>
<td>
<input type="text" name="shipping_date_123456-12345678-123456781">発送日
</td>
</tr>
<tr>
<td>
<input type="text" name="pay_date_123456-12345678-123456781">振込日
</td>
</tr>
</table>
<table>
<tr>
<td>
<input type="text" name="shipping_date_123456-12345678-123456785">発送日
</td>
</tr>
<tr>
<td>
<input type="text" name="pay_date_123456-12345678-123456785">振込日
</td>
</tr>
</table>
</form>
</body>
======
上記JS部分を以下のようにgreasemonkeyに反映した経緯と、結果
・サイトで見つけたサンプルを元にwindow.onloadの前後は、()を使ったら、この部分は、実行できた。
・しかし、function test部分は、()を使ってもできず、firebugでは、「test is not defined」と出て、発送日窓に一括登録ができない。
======
以下、greasemonkeyに設定したスクリプト
(
window.onload=function(){
var myForm=document.createElement('form');
myForm.setAttribute("name","frm_test2");
var inps=new Object;
inps[0]=document.createElement('input');
inps[0].setAttribute("type","text");
inps[0].setAttribute("name","atai");
inps[0].setAttribute("value","");
inps[1]=document.createElement('input');
inps[1].setAttribute("type","button");
inps[1].setAttribute("onClick",'test()');
inps[1].setAttribute("value","実行");
for(var i in inps){
myForm.appendChild(inps[i]);
}
document.body.appendChild(myForm);
}());
function test(){
num = document.rjForm2.length
for (var i=0; i<num; i++){
formname = document.rjForm2[i].name;
formname=formname.substring(0,13);
if (formname=="shipping_date"){
document.rjForm2[i].value = document.frm_test2.atai.value;
}
}
}
=======
何卒よろしくお願いいたします。
お礼
なるほど、誤解していました。 コメントアウトでわかりやすい解説ありがとうございました。