1

こんにちは私は各単語のラジオボタンでテーブルを作成するこのコードに取り組んできました。現在、これは完全に機能しますが、ラジオボタンのクリック機能を作成して送信していません。どちらもクリックすると呼び出される関数に到達しますが、関数に入るとgetElementById色を検証または変更するために呼び出すと、IDが見つからないか、少なくともアラートを出した後は何も表示されないため、私はそれを想定しています。

私はjavascriptに比較的慣れていないので、アドバイスがあれば役に立ちます。作成前に呼び出されている可能性があると言われましたが、コードで確認できることからはそうではありません。助言がありますか?

編集:

トラブルが発生したコードです。スペイン人だけが一度クリックするだけです。同じ問題だと思ったので、送信を検証しませんでした

for (i = 0; i < sentences.length; i++) {
    document.write('<p><a onclick ="javascript:ShowHide(\'Sentence' + (i + 1) + '\')" href="javascript:;"><font color="#0000FF"><u>Sentence' + (i + 1) + '</u></font></a></p>');
    document.write('<table style="display: none; table-layout: fixed" id="Sentence' + (i + 1) + '" border = "1">');
    writeSentence(i, words, "Sentences");
    document.write('</table>');
    document.write('<input type="checkbox" name="Sentence_lang ' + (i + 1) + '" id = "Sentence_lang ' + (i + 1) + '" value="All_English" /> All English    ');
    document.write('<input type="checkbox" name="Sentence_lang ' + (i + 1) + '" id = "Sentence_lang ' + (i + 1) + '" value="All_Spanish" /> All Spanish <br />');
}
document.write('</p>')

function writeSentence(i, array, name) {
    var Name = name;
    document.write('<tr>');
    document.write('<td>');
    document.write('</td>');
    for (j = 0; j < array[i].length; j++) {
        var word = array[i][j];
        document.write('<td>');
        if (Name == "Sentences") document.write('<span class="kept" id="word_' + i + '_' + j + '">');
        document.write(word);
        if (Name == "Sentences") document.write('</span> ');
        document.write('</td>');
    }
    document.write('</tr>');
    document.write('<td>');
    document.write('English');
    document.write('</td>');
    for (j = 0; j < array[i].length; j++) {
        document.write('<td>');
        document.write('<input type="radio" name="' + Name + (i + 1) + '_' + (j) + '" id="Eng_' + (i + 1) + '_' + (j) + '" value="English" >');
        document.write('</td>');
    }
    document.write('</tr>');
    document.write('<tr>');
    document.write('<td>');
    document.write('Spanish');
    document.write('</td>');
    for (j = 0; j < array[i].length; j++) {
        document.write('<td>');
        document.write('<input type="radio" onclick = "color(' + i + ',' + j')" name="' + Name + (i + 1) + '_' + (j) + '" id="Spa_' + (i + 1) + '_' + (j) + '" value="Spanish"> ');
        document.write('</td>');
    }
    document.write('</tr>');
    document.write('<tr>');
    document.write('<td>');
    document.write('Other');
    document.write('</td>');
    for (j = 0; j < array[i].length; j++) {
        document.write('<td>');
        document.write('<input type="radio"  name="' + Name + (i + 1) + '_' + (j) + '" id="Other_' + (i + 1) + '_' + (j) + '" value="other" > ');
        document.write('</td>');
    }
    document.write('</tr>');
    if (Name == "Sentences") for (j = 0; j < array[i].length; j++)
    document.write('<input type="radio" input style= "display: none" name="' + Name + (i + 1) + '_' + (j) + '" id="' + Name + (i + 1) + '_' + (j) + '" value="Norm" checked>');
}

function color(i, j,lang) {
    var word = document.getElementById('word_' + i + '_' + j + '');
    aleart(word);
    if (lang == "Spa") word.className = "blue";
}

最後のifステートメントを編集してください。文字列Spaを正しく渡す方法がわからなかったため、3番目のパラメータは現在空です。しかし、必要に応じてそれを回避することができます。

4

1 に答える 1

0

タイプミスがあります: aleart(word);、コンソールにエラーが表示されるはずです。に変更するalert(word);と、アラート ボックスが表示されます。

それとは別に、使用しないでくださいdocument.write。ドキュメントが読み込まれると機能しません。document.write の代替手段またはdocument.writeの代替手段は何ですか? を参照してください。

于 2012-06-26T14:39:08.327 に答える