javascript document.getElementById将.value更改为.href不起作用

时间:2012-05-15 17:22:21

标签: javascript getelementbyid

我正在使用以前的脚本来替换Quicktime视频。

原始脚本使用按钮加载其他视频的URL,但我想使用简单的链接。这是我对javascript非常有限的知识让我陷入困境的地方。

我想我可以在此代码中将“ .value ”更改为“ .href ”:

function loadVideo() {
                movie.loadURL( document.getElementById('movie-url').value );
                readyInitialized = false;
            }

但视频会在另一个窗口中打开。

我的链接如下:

<a id="movie-url" href="http://www.fixxed.com/test/test/media/Kodak_FashionShow.mov" onclick="loadVideo(); return false;" rel="nofollow">Second Video</a><br />
<a id="movie-url" href="http://www.fixxed.com/test/test/media/doritos-day.mov" onclick="loadVideo(); return false;" rel="nofollow">Frist Video</a>

点击上面的任何一个链接只会触发:

<input type="text" id="movie-url" value="http://mirrors.creativecommons.org/movingimages/Building_On_The_Past.mov" />

HTML文档和javascript文件都包含类似的javascript代码,如果没有其他代码将无法工作(我不知道为什么,我只想使用它一次) HTML:

function loadVideo() {
                movie.loadURL( document.getElementById('movie-url').value );
                readyInitialized = false;
            }

javascript文件:

pfQuicktime.prototype.loadURL = function() {
    if (this.movie) {
        var url = document.getElementById('movie-url').value;
        this.movie.SetURL(url);
        this.movie.SetControllerVisible(false);
    }
}

可以找到一个工作示例HERE

2 个答案:

答案 0 :(得分:1)

如果您想要元素的href,那么您将需要使用getAttribute('href')

function loadVideo() {
           movie.loadURL( document.getElementById('movie-url').getAttribute('href'));
           readyInitialized = false;
         }

正如Alnitak指出的那样,您不能在页面上多次使用ID。

答案 1 :(得分:1)

你有太多的元素(即不止一个)具有相同的ID。

为每个元素提供自己的ID,并在事件处理程序中使用this来引用当前元素,以便您可以提取其href

<a id="movie1" href="http://..../"  
 onclick="loadVideo(this);" rel="nofollow"">First</a><br />

<a id="movie2" href="http://..../"
 onclick="loadVideo(this);" rel="nofollow">Second</a>

<script>
function loadVideo() {
    movie.loadURL(this.href);
    readyInitialized = false;
    return false;
}

// this _may_ allow you to supply your own URL
pfQuicktime.prototype.loadURL = function(url) {
    if (this.movie) {
        this.movie.SetURL(url);
        this.movie.SetControllerVisible(false);
    }
}

</script>

(FWIW,我通常不建议使用DOM0内联事件处理程序,但在这种情况下似乎很方便)。