我正在尝试将字符串值传递给按钮onclick事件 但是javascript函数无法从变量x读取任何内容
<button class="btn btn-buy" onclick="myFunction(@item.ProductId.ToString())" style="@btnstyle"><h4>Add to Basket</h4></button>
如何将变量值传递给Java脚本参数?
<script>
function myFunction(x) {
alertify.prompt('Prompt Title', x, '1'
, function (evt, value)
{
}
, function () {
alertify.error('Cancel') });
}
</script>
答案 0 :(得分:0)
好像您只需要将值放在引号中一样,razor会将@item.ProductId.ToString()
的值直接放入html中,但不会放在引号中,因此当浏览器将其解释为javascript时会很困惑。
在使用剃须刀时要记住它是一个模板系统,可以输出文档,然后由浏览器进行解释,这很有帮助。 @item.ProductId.ToString()
只是将一些文本放入该模板中。 Javascript无法访问该变量,除非可以通过模板使用。由于这个原因,它需要被一些东西包围,以使javascript将其视为字符串。实际上,这意味着用引号将其引起来,例如"@item.ProductId.ToString()"
例如:
function myFunction(x) {
console.log(x)
alertify.prompt('Prompt Title', x, '1', function(evt, value) {
}, function() {
alertify.error('Cancel')
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/alertify.js/0.5.0/alertify.min.js"></script>
<button class="btn btn-buy" onclick="myFunction('test')" style="@btnstyle"><h4>Add to Basket</h4></button>
在该示例中,如果'test'
不在引号内,则它将是未定义的,因为它正在寻找一个名为test的变量:
function myFunction(x) {
console.log(x)
alertify.prompt('Prompt Title', x, '1', function(evt, value) {
}, function() {
alertify.error('Cancel')
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/alertify.js/0.5.0/alertify.min.js"></script>
<button class="btn btn-buy" onclick="myFunction(test)" style="@btnstyle"><h4>Add to Basket</h4></button>
答案 1 :(得分:-2)
假设@item.ProductId.ToString()
试图调用JS的toString()方法,那么您需要使用小写字母t(而不是大写字母.toString
)调用T
。