onclick事件中没有出现弹出窗口

时间:2017-04-15 09:15:29

标签: javascript php

为什么这段代码在PHP中不起作用?当用户点击我的图像时,我想弹出一个对话框,其ID为" 1"。

<script>
echo "<script type='text/javascript'>

$id1 = document.getElementById('1');

$id1.onclick = function() {
  alert('hello');
};

</script>";

2 个答案:

答案 0 :(得分:0)

&#13;
&#13;
function one() {
	alert('hello');
};
&#13;
<a onClick="one()">Click me!</a>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

  1. 与您问题的第一条评论相反, CAN 使用数字作为唯一标识符:Link
  2.   

    id属性指定其元素的唯一标识符(ID)。

         

    ID可以采取什么形式没有其他限制;的 在   特别是,ID可以只包含数字 ,以数字开头,   以下划线开头,仅包括标点符号等。

         

    元素的唯一标识符可用于各种目的,   最值得注意的是使用链接到文档的特定部分的方法   片段,作为在脚本编写时定位元素的一种方式,并作为一种方式   从CSS设置特定元素的样式。

    尝试使用属性input放置id="1"元素,然后使用document.getElementById函数访问它。它有效。

    但我同意的是,这些标识很难阅读,理解甚至记住......只是&#34; 1&#34;并没有告诉你有关该元素的任何信息。我不建议使用这种方法。是的,最好使用更多&#34;告诉&#34;名称如&#34;按键测试&#34;或者那样的。

    1. 代码不起作用,因为在 PHP标记的上下文中,您使用$符号引用变量... PHP变量。因此,行$id1 = document.getElementById('1');被解释为= document.getElementById('1');并导致JS的语法错误。它首先被评估为一个php变量,并且由于它没有被定义,所以没有什么可以回应的,所以你想要添加到页面的js脚本是不是已经完成了。
    2. 该部分页面的源代码如下所示:

      <script type="text/javascript">
       = document.getElementById('1');
      .onclick = function() {
                          alert('hello');
                      };
      </script>
      

      你看到自己没有变量

      请尝试以下组合代码,而不是这样:

      <?php
      /*
          If you declare a php variable, the value you assign to it becomes a JS 
          variable name and is echoed then in the script
      */
      $id1 = "test";
      echo "<script type='text/javascript'>
      $id1 = document.getElementById('1');
      $id1.onclick = function() {
                      alert('hello');
                  };
      </script>"
      
      ?>
      

      之后,如果您查看页面的源代码,您现在可以看到变量声明是正确的:

      <script type="text/javascript">
      // Var name has appeared!
      test = document.getElementById('1');
      test.onclick = function() {
                          alert('hello');
                      };
      </script>
      

      如果您在代码中没有出现其他错误,点击该按钮会导致警告弹出。

      1. 我建议按以下方式声明变量:

        var varName = value;

      2. 否则变量会自动变为全局变量。您选择的方式取决于您的目标和计划架构