0

この関数は、患者のメモを非表示にして次のメモを表示することになっています (別のメモがある場合)

function nextNote(idno){
    document.getElementById(idno).style.display = 'none';
    var idno2 = parseInt(idno)+1;
    document.getElementById(idno2.toString()).style.display = 'inline';
    document.getElementById('prevNote').label = parseInt(document.getElementById('prevNote').label) + 1;
    document.getElementById('nextNote').label = parseInt(document.getElementById('nextNote').label) + 1;

キャッチされていない TypeError: null のプロパティ 'style' を読み取れません"document.getElementById(idno).style.display = 'none';

問題の要素 <li class="notes" label="1052" style="display: inline;" id="1">On: 5/17/2004 A real good Patient test</li>

nextNote は以下によって呼び出されています:<input type="button" id="nextNote" class="notesbottombutton" value=">" label="1" onclick="nextNote(this.label);" />

Chrome javascript コンソールを使用すると、次の document.getElementById(1).style.display;ようになります。"inline"

注意 if(document.getElementById(idno2.toString()) のように動作させた後、関数にチェックを追加して、表示するメモがもうない場合は何もしないようにします。取得しようとしています。まずは基本機能

4

2 に答える 2

1

多分問題はあなたのクリックハンドラーです:

nextNote(this.label);

labelHTML 入力のプロパティではありません。有効な属性でさえありません。inputwithのキャプションを設定するには、type="button"そのvalue属性を使用this.valueし、 を使用してアクセスする必要があります。

この属性を使用して要素にデータを添付するだけで、属性にアクセスしたい場合は、次のようにする必要があります。

nextNote(this.getAttribute('label'));

ただし、data-代わりに接頭辞付きの属性を使用することをお勧めします。これは、HTML 5 でデータを添付する標準的な方法です (下位互換性もあります)。

<input data-label="foo" />

nextNote(this.getAttribute('data-label'));
于 2012-08-04T01:56:03.340 に答える
0

this.label要素の label プロパティを参照していますが、label という属性を設定しています。onclick を次のように変更します。

onclick="nextNote(this.getAttribute('label'));"
于 2012-08-04T01:54:12.443 に答える