在我的index.shtml中,我想在用户选中复选框后更改页面中所有<button>
的文本。我在复选框onclick
方法中尝试了这个:
@functions{
private void Invisibilize()
{
List<HtmlButton> buttons = new List<HtmlButton>();
buttons = this.HtmlControls.OfType<HtmlButton>().ToList();// error
foreach (HtmlButton button in buttons)
{
button.Style="Color:red";
button.InnerTex = "Currently not selectable";
} //end foreach
}// end method
}
它不起作用。错误说明页面:
不包含'HtmlControls'的定义
我已经导入了所需的所有库
@using System.Web.UI.HtmlControls;
@using System.Linq;
@using System.Collections;
有谁知道如何解决这个问题?
HTML标记:
<input id="cb60" type="checkbox" onclick="Invisibilize()" />
<label for="cb60">Disable the buttons</label>
答案 0 :(得分:2)
通过你尝试的方式是不可能的。 MVC的工作方式与Web窗体不同。当你有一个完全呈现的HTML文档时,它已经回到了客户端。您需要使用JavaScript来执行此操作。这很简单:
var buttons = document.getElementsByTagName('button');
for (var i = 0; i < buttons.length; i++)
{
buttons[i].innerHTML = 'new button text';
}
或者,如果你想使用jQuery:
$('button').each(function () {
$(this).html('new button text');
});
修改强>
您的函数语法不正确。事实上,我不确定你在哪里有这个语法的想法。在JavaScript中,声明了一个函数:
function myAwesomeFunction() {
...
}
JavaScript函数上没有accessibility关键字,因为JavaScript没有方法可访问性的概念;一切都是公开的。 JavaScript函数也没有返回类型,因为JavaScript是duck-typed。您还需要@functions
位。我不确定那是什么。
所以,你应该拥有的是:
<script>
function Invisiblize() {
// code to alter buttons
}
</script>
或者,您可以直接绑定到事件并将代码放在那里,而无需单独的命名函数:
$('#checkbox').on('click', function () {
// code to alter buttons
});