繁体   English   中英

将字符串变量传递给JavaScript函数

[英]Pass string variable to JavaScript function

我正在尝试将字符串值传递给按钮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>

好像您只需要将值放在引号中一样,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> 

假设@item.ProductId.ToString()你想调用JS的toString()方法,那么你需要调用.toString以小写T,而不是资本T

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM