当我使用此代码时:

<asp:Button runat="server" ID="Block" Text="text"  OnClientClick="return BlockCheck()"   OnClick="BtnBlockClick"  CausesValidation="False"/>


function BlockCheck() {
            if (x) {
                document.getElementById('#ErrorText').text('Error');
                return false;
            }
        return true;
    }


但这是本部分的内容:document.getElementById('#ErrorText').text('Error');<br>
返回true。

最佳答案

首先,您不需要在getElementById的参数中使用#:它实际上应该像这样编写...

document.getElementById('ErrorText')


使用#会尝试查找ID确实等于'#ErrorText'的元素-将会失败,因此该函数将返回null。之后,任何尝试使用null的尝试(尤其是从中调用某些方法)都将失败,并引发错误。

其次,您似乎混合了jQuery函数和JavaScript函数:DOMElements中没有text方法。严格来说,您必须先检查textContent支持,然后再使用它。如果不支持,请改用innerText。例如:

var el = document.getElementById('ErrorText');
el['textContent' in el ? 'textContent' : 'innerText'] = 'Error';


如果您的项目不必支持IE8-,显然不需要检查。

08-07 21:23