Как мне передать значение моего события onClick моей второй функции?

#javascript #json

#javascript #json

Вопрос:

В принципе, у меня есть <input> поле, в котором я начинаю вводить имя. При вводе появляется html-файл с неупорядоченным списком <ul> , содержащим названия моих видео из моего файла JSON. Что я пытаюсь сделать, так это иметь возможность нажать на кнопку и воспроизвести видео в <video> проигрывателе. Однако, «val.name » не передается функции g(); когда я нажимаю на нее.

 $('#search').keyup(function() {
    var searchField = $('#search').val();
    var myExp = new RegExp(searchField, "i");
    $.getJSON('data.json', function(data) {
        var output = '<ul class="searchresults">';
        $.each(data, function(key, val) {
            if (val.name.search(myExp) != -1) {
                output  = '<li>';
                output  = '<div>'  val.name  '</div>';
                output  = '<img src="images/'  val.name  '.jpg" alt="'  val.name  '" />';
                output  = '<button onClick="g('  val.name  ')" >Help Me Here</button>';                     
                output  = '</li>';
            }
        });
        output  = '</ul>';
        $('#update').html(output);
    });
});


function g(e){
    $('#videoObj').remove();
    $('<video controls preload="metadata" id="videoObj" width="100%" height="720"  src="videos/' e '.mp4" type="video/mp4" frameborder="0" allowfullscreen><track label="English" kind="subtitles" srclang="en" src="subtitles/' e '.vtt" ></video>').prependTo('#vholder').attr('autoplay','autoplay');  
}
  

Комментарии:

1. где находится HTML, на который вы ориентируетесь? какое значение передается функции?

2. Вам нужны кавычки вокруг строки val.name в строке, которая записывает обработчик onClick.

3. Пожалуйста, не создавайте HTML из строк JS, это вызовет проблемы, только если вы забудете закодировать значения, которые должны быть закодированы. Кроме того, его сложно читать и поддерживать.

4. @Marc — Если вы посмотрите в конец моего тега video, значение передается внутри него и добавляется к идентификатору. Не уверен, почему это не обернулось вокруг. !

5. @James — Спасибо! Я упустил это из виду!

Ответ №1:

html-строка имеет неправильную форму. измените это

 output  = '<button onClick="g('  val.name  ')" >Help Me Here</button>'; 
  

для этого

 output  = '<button onclick="g(''  val.name  '')" >Help Me Here</button>';
  

Комментарии:

1. Ну, вы знаете, кто дядя обезьяны? LMBO … этот парень прямо здесь! Спасибо! Не знаю, как я продолжал игнорировать это в течение 3 дней!

2. Я рад, что это помогло. Пожалуйста, примите ответ, чтобы он мог помочь и другим.

3. Как мне это сделать? Я проголосовал за это, но как мне принять?

4. рядом с вопросом должна быть зеленая галочка.