JavaScript 运行两次

标签 javascript codeigniter

我必须为学校开发一个小型应用程序,我首先在 Photoshop 中进行了一些设计,然后将其“转换”为 html。一切顺利。我用 javascript 创建了一个自定义下拉菜单,它运行顺利。我刚刚尝试在设计中实现 CodeIgniter,但 javascript 开始运行两次。

我尝试将纯 html 版本的代码与 codeigniter 结果进行比较,但我似乎找不到任何区别。

你们中有人可以帮助我吗? 这是 CodeIgniter 结果: http://intellia.itforit.net/index.htm

根据 Krof Drakula 的要求,以下是最重要的代码片段:

实际的 jquery 插件:(styleForm.js)

    ;(function($){
    $.fn.styleForm = function() {
        var form = this;

        /* Select */
        $('select', this).each(function(){
            var div = '<div class="styledSelect"><ul>';
            var first = false;

            $('option', this).each(function(){
                var cssclass = "";
                if(!first) {
                    first = true;
                    cssclass = 'class="first"'
                }
                div += '<li ' + cssclass + ' id="' + $(this).attr("value") + '">' + $(this).text() + '</li>';
            });

            div += '</ul></div>';
            $(this).hide();
            $(this).after(div);
        });

        $('.styledSelect ul').toggle(function(){
            $('li:not(.first)', this).show("fast");
        }, function(){
            $('li:not(.first)', this).hide("fast");
        });

        $('.styledSelect ul li:not(.first):not(.selected)').click(function(){
            var id = $(this).attr('id');
            var content = $(this).text();
            $('.styledSelect ul li.first').attr('id', id).text(content);
            $('.styledSelect ul li').css({'font-weight': 'normal'});
            $(this).css({'font-weight': 'bold'});

            /* SELECT in Select form item */
            var selected = $('select option[value="' + id + '"]:not(.first)', form).get(0);
            selected.setAttribute("selected", "selected");
            //$(form).submit();
        });

    };
})( jQuery );

这是它的启动位置:(canvasDrawing.js)

$(document).ready(function(){
     $('form').styleForm();
     //Unimportant canvas stuff
});

提前致谢, 鸭子

最佳答案

问题是你的canvasDrawing.js,在“不重要的 Canvas 内容”中,导致了一个javascript错误。如果它描述的 Canvas 确实存在,则您的 styleForm 内容仅运行一次。因此,将其添加到您的 HTML 中:

        <canvas id="floorplan"></canvas>

魔法将会发生。或者,在您的 canvasDrawing 文件中,在 styleForm 之后添加如下子句:

var canvas = document.getElementById('floorplan');
if (!canvas)
    return;

我实际上不太清楚为什么该函数中出现错误会导致它运行两次,但这绝对是问题所在。查看:your code + a canvas element = working

关于JavaScript 运行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4371415/

相关文章:

php - 类型 : ArgumentCountError Message: Too few arguments to function

javascript - 简单的 Jquery 问题

javascript - 将 html 标签转换为字符串

javascript - Uncaught Error : Based on the provided shape, [1024,3],张量应该有 3072 个值但有 30

javascript - 嵌套的 Angular 指令在 `template` 和 `templateUrl` 上表现不同

php - Grocery CRUD 中的依赖下拉列表 (CodeIgniter)

php - 从表中选择值更新其他表值 Codeigniter 问题

php - 如何获取最符合用户搜索条件的记录?

javascript - angular-bootstrap - 使用引导工具提示重复调用 $compile 会导致速度缓慢

mysql - 我如何在 CodeIgniter 中查询这个