回显函数后未定义的javascript值';html onload标记php中的s参数

回显函数后未定义的javascript值';html onload标记php中的s参数,javascript,php,null,echo,undefined,Javascript,Php,Null,Echo,Undefined,我有一个php函数,它回显一个技能栏对象的标记,将其呈现到屏幕上,我试图传入一个函数,以定义加载时的百分比,但由于某些原因,当我在控制台中调试它时,定义百分比的值未定义,即使它调用函数非常好: rotating circle undefined% 在这里,我声明了一个函数来设置functions.php文件中的百分比(简化为精确显示问题所在,数据进度是它的起始值,需要更改,因为它不是很可读): 期待任何答案,因为我现在像一棵树一样被难住了我不知道PHP如何对应DOM事件,但是当你的echo\

我有一个php函数,它回显一个技能栏对象的标记,将其呈现到屏幕上,我试图传入一个函数,以定义加载时的百分比,但由于某些原因,当我在控制台中调试它时,定义百分比的值未定义,即使它调用函数非常好:

rotating circle undefined% 
在这里,我声明了一个函数来设置functions.php文件中的百分比(简化为精确显示问题所在,数据进度是它的起始值,需要更改,因为它不是很可读):


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

我不知道PHP如何对应DOM事件,但是当你的
echo\u skillbar
被回送时,似乎已经触发了
onLoad
事件

尝试这样的内联JS:

function echo_skillbar($data_progress, $function){
    echo " <div class='radial-progress' data-progress='$data_progress'> ";
    echo '<script>{$function}()<script>';
}
function echo\u skillbar($data\u progress,$function){
回声“;
回显“{$function}()”;
}

这样,JS函数将在
加载后立即调用。您只需更改JS函数的内部结构即可获得正确的属性。

您得到了什么HTML输出?暂时忽略Javascript错误。我认为这与
onLoad
事件有关。在JS控制台中运行函数时会发生什么?尝试将
onLoad
更改为
onClick
-输出正确吗?嘿,onClick工作了!我的HTML输出是:''所以我知道它的回音正确:我想知道为什么它是未定义的onLoad?我不知道PHP如何对应DOM事件,但是当你的
echo_skillbar
被回音为“DOM突变事件”时,
onLoad
事件似乎已经被触发了-在JS中收听DOM中出现的
div.radial-progress
appearence,当它出现时执行所需的函数OK我已经测试了一点,我不得不将jQuery移到顶部,它仍然会给我一个未定义的错误,但是将onload更改为onclick是有效的,您的观点是关于DOM突变事件,我不知道它们是什么,也不知道DOM加载东西的顺序。所以我现在就要去研究那些东西。回到这里,谈谈你的观点,并尝试所有这些观点。这些都是非常有用的东西,不过老兄,谢谢你!啊,如果我不清楚,很抱歉,不清楚,但我不确定我是否做错了,因为这是我以前从未听说过的新东西,所以我需要研究并返回到这一点,以确保这是我,而不是你的代码,如果这有意义的话?:)!控制台输出比什么?你能给我演示一下吗?您是否在php中传递参数
echo
-JS函数有一个参数:
函数旋转\u圆(值)
<div class = "col-xs-3">
    <?php echo_skillbar(0, 'rotate_circle(80)') ?>
    <br><div class = ""><b><p>HTML</p></b></div>
</div>
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);
}
function echo_skillbar($data_progress, $function){
    echo " <div class='radial-progress' data-progress='$data_progress'> ";
    echo '<script>{$function}()<script>';
}