iframe src随着Javascript的变化而无法正常工作

时间:2013-01-15 21:41:49

标签: javascript iframe src

我目前有一些看起来有点像这样的Javascript:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
function changeSource(newSource) {
  document.getElementById('preview').src = newSource;
}
});
</script>

然后我有一些看起来像这样的HTML:

<table border=0 class="colors">
  <tbody>
    <tr>
      <td><a onclick="changeSource('http://www.test.com')"><img width="40" src="test.png"/></a></td>
    </tr>
  </tbody>
</table>

然后是iframe部分:

<table border=0>
  <tbody>
    <tr>
      <td><iframe id="preview" width="125" height="303" src="test.php" scrolling="no" frameborder="0" marginwidth="0" marginheight="0" hspace="0" vspace="0"></iframe></td>
    </tr>
  </tbody>
</table>

但是,点击标签中的图片,Iframe的来源不会改变。为什么会这样?

2 个答案:

答案 0 :(得分:2)

您收到错误,因为该函数是一个本地方法,因为您将其隐藏在onready函数中。没有必要使用该示例进行onready调用。

<script>
$(document).ready(function(){
function changeSource(newSource) {
  document.getElementById('preview').src = newSource;
}
});
</script>

需要

<script>
  function changeSource(newSource) {
      document.getElementById('preview').src = newSource;
  }
</script>

更好的是,不需要JavaScript!使用HTML应该使用它。使用目标属性。

<td><a href="http://www.example.com" target="preview"><img width="40" src="test.png"/></a></td>

答案 1 :(得分:0)

您正在使用jquery。更好地完美使用。

$(document).ready(function(){
    // selecting anchor tag for table with class colors
    $("table.colors a").click(function(e){
        e.preventDefault();
        var newSource = $(this).attr("href");
        $("#preview").attr({"src" : newSource});
    });
});

无需通过添加 onclick 属性或目标属性来搞乱html。 但最好使用html的目标属性。

<table border=0 class="colors">
  <tbody>
    <tr>
      <td><a href="http://www.test.com"><img width="40" src="test.png"/></a></td>
    </tr>
  </tbody>
</table>