javascript - 未捕获的类型错误 : Cannot read property 'split' of undefined(…)

标签 javascript jquery html wordpress visual-composer

我收到 Uncaught TypeError: Cannot read property 'split' of undefined(...)

这是我的 jquery 代码:

( function( $ ) {
    "use strict";

    $('.tk-input').on('change', function(e){
    var $umargin = $(this).parent();
    var temp = '';
    $umargin.find('.tk-input').each(function(input_index, input){
        var margin_property = $(input).attr('data-property');
        var input_value = $(input).val();
        if(input_value != '')
        {
            if(input_value.match(/^[0-9]+$/))
                input_value += 'px';
            temp += 'margin-'+margin_property+':'+input_value+';';

        }
    });
    $umargin.find('.tk-margin-value').val(temp);
});
$('.tk-margin-values').each(function(index, element){
    var $umargin = $(this);
    var tk_margin_value = $umargin.find('.tk-margin-value').val();
    console.log( $umargin.find('.tk-margin-value').val() );
    if(tk_margin_value != '')
    {

        var vals = tk_margin_value.split(';');

        $.each(vals, function(i,vl){
            if(vl != '')
            {
                var splitval = vl.split(':');
                var margin_value = splitval[1];
                var param = splitval[0].split('-');
                var margin_property = param[1];
                $umargin.find('.tk-input').each(function(input_index, input){
                    var input_margin_property = $(input).attr('data-property');
                    if(margin_property == input_margin_property)
                        $(input).val(margin_value);
                });
            }
        })
    }
});

} )( jQuery );

这是我的 HTML 代码

<div class="tk-margin-values">
                    <input name="tk_margin_top" data-property="top" class="value-margin-top tk-input '. esc_attr( $settings['param_name'] ) .' '. esc_attr( $settings['type'] ) .'_field" type="text" value="' . esc_attr( $top_val ) . '">
                <input name="tk_margin_right" data-property="right" class="tk-value-margin-right tk-input '. esc_attr( $settings['param_name'] ) .' '. esc_attr( $settings['type'] ) .'_field" type="text" value="' . esc_attr( $right_val ). '">

                <input name="tk_margin_bottom" data-property="bottom" class="tk-value-margin-bottom tk-input '. esc_attr( $settings['param_name'] ) .' '. esc_attr( $settings['type'] ).'_field" type="text" value="'. esc_attr( $bottom_val ).'">

                <input name="tk_margin_left" data-property="left" class="tk-value-margin-left tk-input '. esc_attr( $settings['param_name'] ) .' '. esc_attr( $settings['type'] ).'_field" type="text" value="' . esc_attr( $left_val ). '">';

    //$pieces = array( $margin_property, $top_val, $right_val, $bottom_val, $left_val );
    //$values   = implode( '||', $pieces );
    <input type="text" name="'. esc_attr( $settings['param_name'] ) .'" class="tk-margin-value wpb_vc_param_value wpb-input '. esc_attr( $settings['param_name'] ).' '. esc_attr( $settings['type'] ) .'_field" value="'. esc_attr( $value ) .'" '. $dependency .' />';     

    </div>

$value 是数据库中保存的值,当前 'margin-top:10px;margin-right:10px;' 保存在 $value 变量中。

我不明白为什么 $umargin.find('.tk-margin-value').val() 是控制台日志中未定义的原因以及为什么会出现此错误“Uncaught TypeError: Cannot read property 'split' of undefined (……)”

最佳答案

已更新

现在可以使用

或者您可以检查 if ($('.tk-margin-values').length)) 长度,如下所示

        $(document).ready(function(){
            "use strict";

            $('.tk-input').on('change', function(e){
            var $umargin = $(this).parent();
            var temp = '';
            $umargin.find('.tk-input').each(function(input_index, input){
                var margin_property = $(input).attr('data-property');
                var input_value = $(input).val();
                if(input_value != '')
                {
                    if(input_value.match(/^[0-9]+$/))
                        input_value += 'px';
                    temp += 'margin-'+margin_property+':'+input_value+';';

                }
            });
            $umargin.find('.tk-margin-value').val(temp);
        });

        if ($('.tk-margin-values').length) {
            $('.tk-margin-values').each(function(index, element){
                var $umargin = $(this);
                var tk_margin_value = $umargin.find('.tk-margin-value').val();
                console.log( $umargin.find('.tk-margin-value').val() );
                if(tk_margin_value != '')
                {

                    var vals = tk_margin_value.split(';');

                    $.each(vals, function(i,vl){
                        if(vl != '')
                        {
                            var splitval = vl.split(':');
                            var margin_value = splitval[1];
                            var param = splitval[0].split('-');
                            var margin_property = param[1];
                            $umargin.find('.tk-input').each(function(input_index, input){
                                var input_margin_property = $(input).attr('data-property');
                                if(margin_property == input_margin_property)
                                    $(input).val(margin_value);
                            });
                        }
                    })
                }
            });
        }
        } );

工作 fiddle fiddle link

关于javascript - 未捕获的类型错误 : Cannot read property 'split' of undefined(…),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40943151/

相关文章:

javascript - 通过传递参数查询 Couchbase View

javascript - jQuery 表总和更改 keyup()?

javascript - 如何在鼠标悬停时突出显示文本

javascript - 跨度不会在 div 中更新

Javascript 深复制 Squel 对象

javascript - 在折线图中添加不同的标签 - Chart.js

javascript - 如何使用jquery删除html中的bug字符

javascript - 在 anchor 标记前添加文本

html - 在 Bootstrap 按钮中自定义文本大小

javascript - 短路打印每个值