【问题标题】:Undefined variable from php to js从 php 到 js 的未定义变量
【发布时间】:2014-11-03 13:11:49
【问题描述】:

我有一个循环从数据库发布图像。 我试图给每个照片 div 单独的 id。 当我尝试通过 onclick 函数将其发送到脚本时 它显示“$photoid 未定义” 我尝试在第一个 php 脚本中打印此变量,但它显示了所有 ID,因此不应为空或未定义...

$allphotos = mysql_query("SELECT * FROM photos ORDER BY id DESC");

while ($numphotos = mysql_fetch_assoc($allphotos)){

$photoinfo = mysql_query('SELECT * FROM photos WHERE link="'.$numphotos['link'].'" ');
$fetchinfo = mysql_fetch_assoc($photoinfo);

$photoid = $fetchinfo['id']; 
echo '<div class="thisphotobox" id="'.$photoid.'"><img src="'.$numphotos['link'].'" alt="photo" class="photolink" onclick=clicked($photoid)></div>';
}

这里是脚本:

  <script>
    function clicked(photoid){
    document.getElementById('photoid').style.backgroundColor = 'red'
    }
    </script>

【问题讨论】:

  • 你把函数改成@vlzvl 写的了吗?或者即使改变了你的背景也不是红色的?
  • 我按照他说的做了一切,现在没有显示任何错误,但是在所有更新后背景仍然没有改变
  • 你知道 jQuery 吗?如果是这样,您可以尝试将 document.get 等行替换为 $("#" + photoid).css({"backgroundColor" : "#FF0000"});另一种可能性是没有通过正确的 photoid...尝试添加 alert(photoid);到你的函数,以确保正确的 id 被传递
  • 哦,不,我是新程序员,拥有 html css php 知识,这也是非常基础的 :D 但是谢谢 :) 嗯警报甚至不显示,这很奇怪,我非常讨厌 js
  • 等等...警报框甚至没有出现或者它确实出现但它是空的?哪一个?

标签: javascript php variables


【解决方案1】:

改变这个:

echo '<div class="thisphotobox" id="'.$photoid.'"><img src="'.$numphotos['link'].'" alt="photo" class="photolink" onclick=clicked($photoid)></div>';

到这里:

echo '<div class="thisphotobox" id="'.$photoid.'"><img src="'.$numphotos['link'].'" alt="photo" class="photolink" onclick="clicked('.$photoid.');"></div>';

否则,输出只是clicked($photoid),全是文本。

也改变一下:

function clicked(photoid){
document.getElementById('photoid').style.backgroundColor = 'red'
}

到那个:

function clicked(photoid){
document.getElementById( photoid.toString() ).style.backgroundColor = 'red';
}

【讨论】:

  • 我建议更改此网站的名称....DVO(Down Vote Overflow)...顺便说一句,我没有投反对票,我只是感到困惑
  • 谢谢,它实际上似乎完成了我所有的错误,但背景颜色仍然没有改变。任何想法?这里有很多投反对票的巨魔:(他们应该被禁止。你们不能互相投票来弥补吗:D?
  • 我赞成您的回答以撤消反对票,而且您的回答很有用
  • 我实际上也赞成你的,只是因为我不喜欢沉默的反对者
  • @Terrorizer,你的意思是div 没有得到红色?
【解决方案2】:

上面的答案是有效的,但是他们忘记添加一些东西,

而不是

echo '<div class="thisphotobox" id="'.$photoid.'"><img src="'.$numphotos['link'].'" alt="photo" class="photolink" onclick="clicked('.$photoid.');"></div>';

复制这段代码

echo '<div class="thisphotobox" id="'.$photoid.'"><img src="'.$numphotos['link'].'" alt="photo" class="photolink" style="background-color:white" onclick="clicked('.$photoid.');"></div>';

添加style="background-color:white;" 我认为如果您没有在 div 中初始化它,您将无法访问 js 中的 .style。希望这会有所帮助

【讨论】:

  • 你确定 background-color:none;已验证?见此链接:stackoverflow.com/questions/8739665/…
  • 是的,没错!!我实际上在 CSS 表中设置了颜色,但必须在这里完成,因为我们可以看到嗯谢谢,现在可以正常工作了。我爱你们所有人
  • 我在一分钟前编辑了我的答案,但我的网络太慢了..我放了白色,因为它是默认颜色。对不起,我是视觉 C++ 和 C# 开发者,一个月后回到 php,我想我很困惑
【解决方案3】:

这只是一个逃避问题。如果您的回显函数中的参数 $photoid 是字符串,则必须对其进行转义。在您上面的代码中:

onclick=clicked($photoid)

应该是

onclick="clicked($photoid)"

如果 $photoid 是一个数字或

onclick="clicked(\'$photoid\')"

如果是字母数字或字符串

【讨论】:

  • 为什么这会被否决?这是正确的......我知道,因为这是我逃避我的论点以使我的回显函数工作的方式!
  • 谢谢它真的很有用。我仍然无法投票,所以投反对票的不是我:D 人们很粗鲁:X
  • 请随意对答案进行投票以消除反对者的 -1
  • 看起来不错,但颜色仍然没有变化:(
猜你喜欢
  • 1970-01-01
  • 2016-09-10
  • 2018-11-13
  • 2023-01-26
  • 1970-01-01
  • 2012-05-24
  • 1970-01-01
  • 2021-02-01
  • 2015-11-07
相关资源
最近更新 更多