Передать строковую переменную в функцию JavaScript - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь передать строковое значение событию 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>

Ответы [ 2 ]

0 голосов
/ 14 января 2019

при условии, что @item.ProductId.ToString() вы пытаетесь вызвать метод toString () JS, вам нужно вызвать .toString с использованием lowerCase t, а не с заглавной буквы T.

0 голосов
/ 14 января 2019

Похоже, что вам просто нужно поместить значение в кавычки, 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>
...