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;

未捕获的类型错误:无法读取 null 的属性“样式”"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);

label不是 HTML 输入的属性。它甚至不是一个有效的属性。input要设置with的标题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指的是元素上的标签属性,但您正在设置一个名为标签的属性。将您的 onclick 更改为:

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