1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

アンケートを自動回答するブックマークレットの紹介

Last updated at Posted at 2022-11-05

概要

某デ*スカバリーメソ*ド等の面倒なアンケートみたいなのを自動で回答するプログラムを作った
実行するとプロンプトに選択肢の数を入力するよう求められるから選択肢の数をタイプしてOKボタンを押すと選択肢をランダムで選んでくれる
なお、「選択肢の数」は質問の数ではない

このサイトで動作を試せる

使い方は「ブックマークレット 使い方」でググれば出てくるし、以下の動画を見れば分かると思う

ソースコード

HTML

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <div>
        (1)
        <input type="radio" name="button" value="1">1
        <input type="radio" name="button" value="2">2
        <input type="radio" name="button" value="3">3
        <input type="radio" name="button" value="4">4
    </div>
    <div>(2)
        <input type="radio" name="button2" value="1">1
        <input type="radio" name="button2" value="2">2
        <input type="radio" name="button2" value="3">3
        <input type="radio" name="button2" value="4">4
    </div>
    <div>(3)
        <input type="radio" name="button3" value="1">1
        <input type="radio" name="button3" value="2">2
        <input type="radio" name="button3" value="3">3
        <input type="radio" name="button3" value="4">4
    </div>
    <div>(4)
        <input type="radio" name="button4" value="1">1
        <input type="radio" name="button4" value="2">2
        <input type="radio" name="button4" value="3">3
        <input type="radio" name="button4" value="4">4
    </div>
    <div>(5)
        <input type="radio" name="button5" value="1">1
        <input type="radio" name="button5" value="2">2
        <input type="radio" name="button5" value="3">3
        <input type="radio" name="button5" value="4">4
    </div>
    
</body>
</html>

JavaScript

内容はどれも同じ、コピペは自由にどうぞ
URL欄へのコピペ用 :

javascript:!function(){const e=window.prompt("選択肢の数を入力","4"),t=document.getElementsByTagName("div");for(let l=0;l<t.length;l++){button_array=t[l].getElementsByTagName("input");for(let n=0;n<button_array.length;n++)if(button_array[n].type&&"radio"===button_array[n].type){const o=Math.floor(Math.random()*e);button_array[o].checked=!0}}}();

インデント済み・解説コメント付き :

javascript:(function(){
    const N = window.prompt("選択肢の数を入力", "4"); //選択肢の数を受け取る
	const box_array = document.getElementsByTagName("div"); //document内の全てのdivタグを変数box_arrayに配列として格納
	for(let i = 0; i < box_array.length; i++){ //各々のdivタグに対して、以下の処理を実行
		const box = box_array[i]; //i個目のdivタグを変数boxに格納
		button_array = box.getElementsByTagName("input"); //box内の全てのinputタグを変数box_arrayに配列として格納
		for(let j = 0; j < button_array.length; j++){ //各々のinputタグに対して、以下の処理を実行
			if(button_array[j].type && button_array[j].type === 'radio'){ //j番目のinputタグにtypeプロパティが存在し、そのプロパティが"radio"である場合、以下の処理を実行
				const random_num = Math.floor(Math.random() * N); //0からNまでのランダムな整数を生成
				const button = button_array[random_num]; //i個目のdiv内のinputタグのうち、どれか一つをランダムに選択し、変数buttonに格納
				button.checked = true; //ランダムに選択されたinputタグのcheckedプロパティをtrueとする
			}
		}
	}
})();

//コメント無し
javascript:(function(){
    const N = window.prompt("選択肢の数を入力", "4");
	const box_array = document.getElementsByTagName("div");
	for(let i = 0; i < box_array.length; i++){
		const box = box_array[i];
		button_array = box.getElementsByTagName("input");
		for(let j = 0; j < button_array.length; j++){
			if(button_array[j].type && button_array[j].type === 'radio'){
				const random_num = Math.floor(Math.random() * N);
				const button = button_array[random_num];
				button.checked = true;
			}
		}
	}
})();
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?