javascript - Uncaught ReferenceError : variable is not defined on onclick function Javascript

标签 javascript jquery

今天,我已经阅读了所有关于此的主题,但无法提出解决方案,这就是我打开此主题的原因。

这是我创建 View 的函数,我正在尝试使用一个 onclick 函数,它应该指向我更改文本框值的其他 javascript 函数。

<script type="text/javascript">
    $('#submitbtnamazon')
            .click(function(evt) {
                        var x = document.getElementById("term").value;

                        if (x == null || x == "" || x == "Enter Search Term") {
                            alert("Please, Enter The Search Term");
                            return false;
                        }
                        listItems = $('#trackList').find('ul').remove();
                        var searchTerm = $("#term").val();
                        var url = "clientid=Shazam&field-keywords="
                                + searchTerm
                                + "&type=TRACK&pagenumber=1&ie=UTF8";       

    jsRoutes.controllers.AmazonSearchController.amazonSearch(url)
                        .ajax({
                            success : function(xml) {
                                $('#trackList')
                                    .append('<ul data-role="listview"></ul>');
                                    listItems = $('#trackList').find('ul');
                                    html = ''

                                 tracks = xml.getElementsByTagName("track");
                                for(var i = 0; i < tracks.length; i++) {
                                    var track = tracks[i];
                                    var titles = track.getElementsByTagName("title");
                                    var artists = track.getElementsByTagName("creator");
                                    var albums =    track.getElementsByTagName("album");
                                    var images =    track.getElementsByTagName("image");
                                    var metaNodes = track.getElementsByTagName("meta");
                                     //trackId ="not found";

                                     trackIds = [];
                                                    for (var x = 0; x < metaNodes.length; x++) {
                                                        var name = metaNodes[x]
                                                                .getAttribute("rel");

                                                        if (name == "http://www.amazon.com/dmusic/ASIN") {
                                                            trackId = metaNodes[x].textContent;
                                                            trackIds.push(trackId);

                                                        }
                                                    }

                                                    for (var j = 0; j < titles.length; j++) {
                                                        var trackId=trackIds[j];
                                                        html += '<div class="span3">'
                                                        html += '<img src="' + images[j].childNodes[0].nodeValue + '"/>';
                                                        html += '<h6><a href="#" onclick="someFunction('
                                                            +trackId
                                                            + ')">'
                                                            +trackId
                                                            + '</a></h6>';
                                                        html += '<p><Strong>From Album:</strong>'
                                                                + albums[j].childNodes[0].nodeValue
                                                                + '</p>';
                                                        html += '<p><Strong>Artist Name:</strong>'
                                                                + artists[j].childNodes[0].nodeValue
                                                                + '</p>';
                                                        html += '<p><Strong>Title:</strong>'
                                                                + titles[j].childNodes[0].nodeValue
                                                                + '</p>';
                                                        /*html += '<p><Strong>Created:</strong>'
                                                                + releaseDate
                                                                + '</p>';*/
                                                        html += '</div>'
                                                    }
                                                }
                                                //listItems.append( html );
                                                $("#track").html(html);
                                                $("#track").dialog({
                                                    height : 'auto',
                                                    width : 'auto',
                                                    title : "Search Results"
                                                });
                                                // Need to refresh list after AJAX call
                                                $('#trackList ul').listview(
                                                        "refresh");
                                            }
                                        });
                    });
</script>

这是我更改文本框值的另一个功能。它实际上适用于其他值,例如当我给出硬编码的字符串值时。我可以在控制台中看到该值,但由于某种原因它给了我这样的错误: 这里以 B 开头的字符串是我从亚马逊获取的 AsinId。我绝对需要帮助,因为我完全被困住了。

未捕获的 ReferenceError:B00BMQRILU 未定义 62594001:1 onclick

<script type="text/javascript">

    function someFunction(var1) {
        tracktextbox = document.getElementsByName("trackId");
        for (var i = 0; i < tracktextbox.length; i++) {
            tracktextbox[i].value = var1;
        }
        $('#track').dialog('close');
    }

</script>

最佳答案

问题是'<h6><a href="#" onclick="someFunction('+trackId+ ')">' , 从错误中可以清楚地看出 trackId是一个字符串值,因此您需要将其包含在 "" 中或 '' .所以试试

'<h6><a href="#" onclick="someFunction(\'' + trackId + '\')">'

关于javascript - Uncaught ReferenceError : variable is not defined on onclick function Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20802564/

相关文章:

javascript - 如何从sequelize关联模型中获取值(value)?

javascript - 通过脚本均衡 div - onload vs ondocumentready

javascript - 图像调整大小的 jQuery 事件?

javascript - 从字符串中获取CSS属性

php - 未应用 TinyMCE 自定义样式(尽管技术上可行)

javascript - ContentEditable - 按 Enter 键生成 P 标签

javascript - 如何暂停所有 jQuery 动画?

javascript - 无论它在 DOM 中的什么位置,我怎样才能使用 jquery 获取下一个/上一个链接?

php - 如何配置文件管理器插件?

javascript - Jquery:如何从内到外修改项目?