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

javascript document.getElementById changing .value to .href not working

本文关键字:href 不起作用 value document getElementById javascript      更新时间:2023-09-26

我正在使用以前的脚本来替换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);
    }
}

一个工作示例可以在这里找到

如果你想要元素的 href,那么你需要使用getAttribute('href')这样:

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

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

您正在遭受太多元素(即多个)具有相同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 内联事件处理程序,但在这种情况下似乎很方便)。