Javascript运行两次

时间:2010-12-06 22:05:11

标签: 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
});

Thanx提前, Duckness

1 个答案:

答案 0 :(得分:0)

问题是你的canvasDrawing.js在“不重要的画布内容”中会导致javascript错误。如果它描述的画布实际存在,你的styleForm东西只运行一次。所以将它添加到您的HTML:

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

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

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

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