PHP-onClick无法正常工作,并使用PHP标签调用“ echo”视频和图像SRC

时间:2019-01-03 06:34:31

标签: php html

我有一个问题,因为我无法在视频src和图像src上调用要检索的数据。这是我的代码。图片和视频src没有显示。 有人可以给我正确的语法吗?谢谢

几个问题 ,我需要连接一些内容吗?我的row ['']是否正确连接?

但是这里的主要问题是我无法单击或更改任何检索或存储的视频。如何修复onClick?谢谢

    <?php 


echo '<li>
<a href="javascript:void();" onClick="document.getElementById("vid_frame").src="images/promvid/pal/<?php row['videos']  ?>">

<span class="vid-thumb">
<img width=72 src="images/promvid/philippines.jpg"/<?php row['image']  ?>
</span>

<div class="desc">Philippines<?php  row['title']  ?>
</div></a></li>';

     ?>

我的错误

  

解析错误:语法错误,意外的“视频”(T_STRING),预期   ','或';

3 个答案:

答案 0 :(得分:1)

您不能在PHP标签内使用PHP标签,而需要使用echo将字符串部分与变量连接起来。

 <?php 


    echo '<li>
    <a href="javascript:void();" onClick="document.getElementById("vid_frame").src="images/promvid/pal/'.$row['videos'].'">

    <span class="vid-thumb">
    <img width=72 src="images/promvid/philippines.jpg"/'.$row['image'].' </span>

    <div class="desc">Philippines'.$row['title'].'    </div></a></li>';

         ?>

答案 1 :(得分:0)

下面的代码可能会对您有所帮助。

在php中,我们需要使用$

echo '<li>
        <a href="javascript:void();" 
            onClick="document.getElementById("vid_frame").src="images/promvid/pal/"'.$row["videos"].'>

            <span class="vid-thumb">
                <img width=72 src="images/promvid/philippines.jpg/"'.$row['image'].'>
            </span>

            <div class="desc">Philippines'.$row['title'].'</div>
        </a>
    </li>';

答案 2 :(得分:0)

您正在使用错误做法,并遇到错误。您不能在<?php ?>标签中包含<?php ?>标签。

编写干净的代码并养成良好的习惯。

  • PHP是一种嵌入式语言。不要尝试通过PHP echo生成所有HTML。将平安的PHP代码嵌入到周围的HTML模板中。您甚至可以在一个循环构造块中关闭PHP标记。

  • 除非您使用开放式标签<?=$variable?>,否则不会输出单独位于PHP标记中的变量。短开标签不应使用,因为大多数服务器配置均未启用它们。

  • 内联JavaScript很老,被认为是不好的做法。首先,有一天内联内联处理程序可能会从标准中删除。请改用事件监听器。

  • 内联元素div中有块元素a。这仅在HTML5中有效。通过在文件的第一行之前加上<!DOCTYPE html>,确保您的文件类型明确为HTML5。

  • 如果href属性应为#javascript:void(0);,则什么都不做的链接已被广泛讨论。我倾向于后者。 void是关键字,但是函数样式还可以。不论代码样式如何,都必须有一个参数。

    • 更好:根本不使用非链接。请改用具有有效后备网址的链接。在事件处理程序中,您可以调用preventDefault()方法,这将阻止href操作,即位置更改。

PHP网站:          

<head>
  <title>Non-Empty Title</title>

<body>

  <ul>

  <?php
    // fake query result
    $rows =
    [
      [
        'videos'              => 'phillippines.mpeg4',
        'image'               => 'philippines.jpg' ,
        'title'               => 'Philippines'     ,
        'noscript-frame-page' => 'philippines.html',
      ],
      [
        'videos'              => 'usa.mpeg4',
        'image'               => 'usa.jpg' ,
        'title'               => 'USA'     ,
        'noscript-frame-page' => 'usa.html',
      ]
    ];

    // fake fetch row
    foreach ($rows as $row)
    {
  ?>

    <li>
      <a class="video-ref"
         href="<?php echo $row['noscript-frame-page'];?>"
         data-video-src="images/promvid/pal/<?php echo $row['videos'];?>"
         target="video-frame"
      >
        <span class="vid-thumb">
          <img width=72 src="images/promvid/"<?php echo $row['image'];?>
        </span>

        <div class="desc"><?php echo $row['title'];?>
        </div>
      </a>
    </li>

  <?php
    }
  ?>

  </ul>

  <noscript>
    <iframe id="video-frame" name="video-frame" src="start-video-page.html"></iframe>
  </noscript>

  <div id="debug">DEBUG OUTPUT</div>

  <script src="my-script.js"></script>

my-script.js

document.addEventListener('DOMContentLoaded', evt =>
{
  "use strict";
  const VideoLinkListener = evt =>
  {
    const videoSrc = evt.currentTarget.getAttribute('data-video-src');
    if(videoSrc)
    {
      document.getElementById('debug').innerHTML = videoSrc;  // document.getElementById('vid_frame').src=videoSrc;

      // do not change location to link's href
      evt.preventDefault();
    }
  };

  document.querySelectorAll('a.video-ref').forEach( link => link.addEventListener('click', VideoLinkListener) );
});