動作していたjsがエラーになったが解消できず、ボタンが表示できない

何を実現したいのかを書きましょう

エラーを解消し、スペースにボタンが表示されるようにしたい

発生した問題やエラーメッセージを具体的に書きましょう

カスタマイズしたjsではなく、kintoneのコードかとおもいます。

Uncaught TypeError: $ is not a function
at download.do?app=1420&contentId=226199&jsType=DESKTOP&hash=1fcb41270b18c766e45e29527e50f3210f3c4bc2:14:14
at edit.js:261:115
at new yk (edit.js:125:333)
at Sx (edit.js:261:94)
at edit.js:260:425
at e.m (edit.js:127:226)
at Pk (edit.js:129:261)
at Kk (edit.js:129:144)
at yk.C (edit.js:951:102)
at rk (edit.js:125:176)
(anonymous) @ download.do?app=1420&contentId=226199&jsType=DESKTOP&hash=1fcb41270b18c766e45e29527e50f3210f3c4bc2:14
(anonymous) @ edit.js:261
yk @ edit.js:125
Sx @ edit.js:261
(anonymous) @ edit.js:260
e.m @ edit.js:127
Pk @ edit.js:129
Kk @ edit.js:129
yk.C @ edit.js:951
rk @ edit.js:125
setTimeout (async)
mk @ edit.js:124
(anonymous) @ edit.js:129
rk @ edit.js:125
Promise.then (async)
nk @ edit.js:124
qk @ edit.js:124
Lk @ edit.js:128
vk @ edit.js:128
Ck @ edit.js:126
Ox @ edit.js:260
Qx @ edit.js:259
VB @ edit.js:312
$B @ edit.js:313
cC @ edit.js:314
dha @ edit.js:887
(anonymous) @ edit.js:882
Sk @ edit.js:131
Tk @ edit.js:130
Rk.xb @ edit.js:951
Sk @ edit.js:131
Tk @ edit.js:130
Rk.xb @ edit.js:951
Sk @ edit.js:131
Tk @ edit.js:130
Wk @ edit.js:130
Cq @ edit.js:200
(anonymous) @ edit.js:25
Yc @ edit.js:45
f.dispatchEvent @ edit.js:923
xq @ edit.js:197
f.tA @ edit.js:1017
f.sr @ edit.js:1017
XMLHttpRequest.send (async)
f.send @ edit.js:1016
Fq @ edit.js:199
Hq @ edit.js:200
wC @ edit.js:320
Pga @ edit.js:868
(anonymous) @ edit.js:868
Sk @ edit.js:131
Tk @ edit.js:130
Wk @ edit.js:130
Cq @ edit.js:200
(anonymous) @ edit.js:25
Yc @ edit.js:45
f.dispatchEvent @ edit.js:923
xq @ edit.js:197
f.tA @ edit.js:1017
f.sr @ edit.js:1017
XMLHttpRequest.send (async)
f.send @ edit.js:1016
Fq @ edit.js:199
Hq @ edit.js:200
wC @ edit.js:320
H7 @ edit.js:868
(anonymous) @ edit.js:882
Sk @ edit.js:131
Tk @ edit.js:130
Rk.xb @ edit.js:951
Sk @ edit.js:131
Xk @ edit.js:130
Sk @ edit.js:131
Tk @ edit.js:130
Rk.xb @ edit.js:951
Sk @ edit.js:131
Tk @ edit.js:130
Wk @ edit.js:130
eha @ edit.js:882
(anonymous) @ edit.js:1732
Yc @ edit.js:45
f.dispatchEvent @ edit.js:923
(anonymous) @ edit:328

実行したコードをコピー&ペーストしましょう

設定しているjsのコードを記載します。
各項目名は実際の名称と若干変更しています。
文字コートは「UTF-8(BOMなし)」です。

(function () {
	"use strict";
	
	var DISPLAY_NAME = 'ボタン名'; 
	var FIELD_CODE = 'コピー元のフィールド名';
	var SFIELD_CODE1 = 'コピー先のフィールド名';
	var SPACE_CODE = 'スペースの要素ID';
	
	//編集
	kintone.events.on(['app.record.create.show','app.record.edit.show'], function(event) {
		var record = event.record;
		
		//コピーボタン
		var $btn = $('<button>' + DISPLAY_NAME + '</button>').on('click', function(){
			moment.locale('ja');
			var rec = kintone.app.record.get();
			rec['record'][SFIELD_CODE1]['value'] = rec['record'][FIELD_CODE]['value'];
			kintone.app.record.set(rec);
		});
		kintone.app.record.getSpaceElement(SPACE_CODE).appendChild($btn[0]);
		
		return event;
	});
	
})();

@f.uchiyama さん

こんにちは、以下のリンクにjQueryのついてまとめてくださっているので、そちら確認された方がいいかもですね。

恐らくコードとして、jQueryを使用しようとしているとコードをみて思いましたのでこちら提案させていただきました。

2 Likes

ご回答ありがとうございます!
私もエラーからGoogleで調べてjQueryを使っているらしいとは思ったのですが、
該当の「edit.js」については自分で用意したものではなく、
他アプリではエラーはないため、自分の作成したjsの方がなぜか
昨日からいきなりエラーになりはじめたと推測してました・・・。
色々調べてみたのですが、原因が特定できなかったので全体的にコードを
書き直し、無事にエラー解消、コピーペーストできるボタンを表示させる
ことができました。

(() => {
  'use strict';

  kintone.events.on(['app.record.create.show','app.record.edit.show'], (event) => {
    var record = event.record;

    // 任意のスペースフィールドにボタンを設置
    const mySpaceFieldButton = document.createElement('button');
    mySpaceFieldButton.id = 'my_space_field_button';
    mySpaceFieldButton.innerText = 'コピーボタン';
    // 値の取得
    var FIELD_CODE_FROM = 'コピー元';
    var FIELD_CODE_TO = 'コピー先';
    // 値をコピーする
    mySpaceFieldButton.onclick = () => {
        var rec = kintone.app.record.get();
        rec['record'][FIELD_CODE_TO]['value'] = rec['record'][FIELD_CODE_FROM]['value'];
        kintone.app.record.set(rec);
    };
    kintone.app.record.getSpaceElement('my_space_field').appendChild(mySpaceFieldButton);
  });

})();
1 Like

カスタマイズファイルは上から順番に読み込まれます。

jQueryを読み込まれた前に、$のあるコードを実行されたかもしれません。

1 Like

いえいえ、こちらこそご返信ありがとうございます!
そうですね、「edit.js」は、static.cybozu.comの中に入ってるので、kintone特有のjsファイルですね。
「edit.js」が表示されている原因は、上記のjQueryが読み込めていなく$でエラーでてたと思いますが、そちらが正しく処理できない → 「edit.js」で次の処理がエラーでてるって感じだと思われます。こういったエラーの一連の流れを表示しているのをスタックトレースっていうのですが、あんまり解説してくださってるサイトは見つからなかったです…

ですが、無事解決できたようでなによりです :v:
jQueryは使わず、基本のDOM操作でされたのですね!
昨日までは、問題なく動いていた もしくは 他の人が作ったコードだったのですかね? :sweat_drops:
余談ですごくはしょって言いますが、パッと前回のコードを見ていたら jQueryのライブラリをCDNから最新版読み込んで、即時関数の仮引数に$はjQuery(実際はjQueryのライブラリからreturnされた値)だよと定義してあげれば問題解決かなと考えておりました :sweat_drops:

1 Like

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。