まず、onClickで呼び出している関数が存在しません。
あなたが定義した関数名はjanidですが、onClickで呼び出している関数はgoodsです。
<input type="radio" id="goods1" name="goods1" value="1" onClick="return janid()">
<input type="radio" id="goods2" name="goods2" value="2" onClick="return janid()">
<input type="radio" id="goods3" name="goods3" value="3" onClick="return janid()">
次に、ラジオボタンとしてグルーピングできていないので、
商品1、商品2、商品3すべてにチェックマークがつけれる状態になっています。
ラジオボタンをグルーピングする場合、nameは全て統一しなければいけません。
<input type="radio" id="goods1" name="goods" value="1" onClick="return janid()">
<input type="radio" id="goods2" name="goods" value="2" onClick="return janid()">
<input type="radio" id="goods3" name="goods" value="3" onClick="return janid()">
次に、getElementByIdでそれぞれのラジオボタンのオブジェクトを取得していますが、
ブラウザによってはこのやり方ではnullが入っています。
全体の処理をwindow.onload時に実行する等工夫が必要です。
window.onload = function() {
// この中に処理を書かないと、IDでオブジェクトを引くことができない可能性がある
}
次に、ラジオボタンの選択状態はvalueでみるのではなくcheckedです。
if (!goods1.checked && !goods2.checked && !goods3.checked){
最後に、そもそもonClickはcheckedが切り替わった「後」に呼ばれるので、
そのタイミングで「どれも選択されていない」判定をしても無駄です。
「どれも選択されていない」かどうかを保持する変数を用意する必要があります。
以上のことを踏まえ、以下のように変更してみてはいかがでしょう。
<script>
var check = function(){
if(selected) {
alert("商品の種類を変更しました");
}
selected = true;
};
var goods1 = null;
var goods2 = null;
var goods3 = null;
var selected = false;
window.onload = function(){
goods1 = document.getElementById("goods1");
goods2 = document.getElementById("goods2");
goods3 = document.getElementById("goods3");
selected = false;
};
</script>
<table>
<td><label>
<input type="radio" id="goods1" name="goods" value="1" onClick="check()">
<span>商品1</span></label>
<label>
<input type="radio" id="goods2" name="goods" value="2" onClick="check()">
<span>商品2</span></label>
<label>
<input type="radio" id="goods3" name="goods" value="3" onClick="check()">
<span>商品3</span></label>
</td>
</table>