在HTML onload标签php中返回函数's参数后的未定义javascript值


undefined javascript value after echoing a function's parameters in html onload tag php

我有一个php函数,它会返回一个技能栏对象的标签,将其呈现在屏幕上我试图传递一个函数来定义它的个人百分比,它应该在加载时,但由于某种原因,定义百分比的值是未定义的,当我在控制台调试它时,尽管它调用了这个函数很好:

rotating circle undefined% 

这里是我在function .php文件中声明设置百分比的函数的地方(简化以显示问题所在,data-progress是它的起始值,它需要更改,因为它不是很可读):

function echo_skillbar($data_progress, $function){
    echo " <div class='radial-progress' data-progress='$data_progress' onLoad = '$function'> " 
}

我在主页中这样调用它:

<div class = "col-xs-3">
    <?php echo_skillbar(0, 'rotate_circle(80)') ?>
    <br><div class = ""><b><p>HTML</p></b></div>
</div>

这里是javascript函数,所以我改变data-progress属性从它的起点(0)到80(%),但这个值是未定义的,即使我传入和函数加载良好,没有意义:

function rotate_circle(value){
    console.log("rotating circle " + value + "%");
    $('head style[type="text/css"]').attr('type', 'text/less');
    less.refreshStyles();
    window.animate = function () {
        $('.radial-progress').attr('data-progress', value);
    }
    setTimeout(window.animate, 2000);
    $('.radial-progress').click(window.animate);
}

期待任何答案,因为我现在像一棵树一样被难住了

我不知道PHP如何对应DOM事件,但似乎onLoad事件已经被触发时,你的echo_skillbar回显

试试内联JS:

function echo_skillbar($data_progress, $function){
    echo " <div class='radial-progress' data-progress='$data_progress'> ";
    echo '<script>{$function}()<script>';
}

这样JS函数就会在<div>加载时调用。你只需要改变JS函数的内部来获得正确的属性。