我已经通过php动态生成了一个视频列表,每个视频都属于具有个人资料图片('userpic')的其他用户。我可以将“ userpic”传递给php中称为javascript函数“ video”,如下所示,这是第一个echo语句:

<?php
//Lots of code
echo "<script>
function video(userpic) {
function AnotherFunction();
document.getElementById('UserPicHolder').innerHTML = userpic;
}
</script>";
//Lots of code
?>


函数“视频”调用AnotherFunction(效果很好)。 var = userpic的路径是正确的本地路径,并在正确的div('UserPicHolder')中正确显示。一切正常。...然后我将内部HTML更改为image属性,如下所示:

<?php
//Lots of code
echo "<script>
function video(userpic) {
function AnotherFunction();
document.getElementById('UserPicHolder').innerHTML = '<img src=\"userpic\"
style=\"width:50px; height:55px\" alt=\"user picture\" class=\"SomeClass\"
title=\"Some text\">';
}
</script>";
//Lots of code
?>


在此第二个echo语句中,即使路径如第一个echo语句中所示是正确的,图像也不会显示在“ UserPicHolder”中。我已经用本地路径替换了src中的userpic,并且图标正确显示(在此第三条echo语句中):

<?php
//Lots of code
echo "<script>
function video(userpic) {
function AnotherFunction();
document.getElementById('UserPicHolder').innerHTML = '<img src=\"images/icon.jpg\"
style=\"width:50px; height:55px\" alt=\"user picture\" class=\"SomeClass\"
title=\"Some text\">';
}
</script>";
//Lots of code
?>


为什么在内部HTML img src中无法识别第二个echo语句中的userpic?请注意,我还用src = \“”。userpic。“ \”和src = \“” + userpic +“ \”和src = \替换了(只是在阅读了其他帖子后才猜测)。 “ + userpic + \”和src = \“”。+ userpic +。“ \”无济于事。谢谢你的帮助!

最佳答案

正确的方法是src=\"'+userpic+'\",如下所示:

document.getElementById('UserPicHolder').innerHTML = '<img src=\"'+userpic+'\" style=\"width:50px; height:55px\" alt=\"user picture\" class=\"SomeClass\" title=\"Some text\">';


这是因为userpic是JS变量,因此需要与字符串的其余部分串联。字符串的第一部分是'<img src=\"',然后添加变量,然后添加'\" style=\"width:50px; height:55px\" alt=\"user picture\" class=\"SomeClass\" title=\"Some text\">'

话虽如此,为什么您要回显一个长字符串而不只是退出PHP,像这样:

<?php
//Lots of code
?>
<script>
    function video(userpic) {
        function AnotherFunction();
        document.getElementById('UserPicHolder').innerHTML = '<img src="'+userpic+'">';
    }
</script>
<?php
//Lots of code
?>

关于javascript - 为什么内部html的src属性无法识别我的动态生成的变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19461882/

10-13 01:24