.click在Javascript中没有任何效果 - 应该基于数组更新两个元素
.click in Javascript not having any effect - should update two elements based on array
我对javascript相当陌生,并试图创建一个语言学习工具,可以播放音乐视频中的剪辑并显示翻译。我正在使用数组来组织和访问链接和翻译。但是,我一定遗漏了一些基本的东西,因为单击短语元素以显示每个视频和翻译不起作用。
http://jsfiddle.net/KireniaV/XaK7G/1/
我使用拼接创建了剪辑,并通过iFrame显示它们(也尝试嵌入视频剪辑,但无论哪种方式都遇到了同样的问题)。
.HTML:
<body>
<div class="nav">
<ul>
<li id="phrase1">Ne dunun bamimyon byori doeji</li>
<li id="phrase2">naui jibun dwidgolmog dalgwa byori tujiyo</li>
<li id="phrase3">dubon dashin sengson gage tolji anha</li>
<li id="phrase4">sorobge uldon naldul nanun wetorirane</li>
</ul>
</div>
<div class="content">
<h3>Nangman Goyangi (Romantic Cat)</h3>
<h4>by Cherry Filter, lyrics and translation courtesy of DavichiLyrics</h4>
<iframe id="player" title="player" src="http://www.youtube.com/v/U6EcOiKWfZI" width="341" height="192" frameborder="0" marginheight="0" marginwidth="0" id="myframe">You can't see iFrames :(.</iframe>
<p id="text">Select a phrase from the song (to either side) to view a video clip, transcription, and translation!</p>
</div>
<div class="nav">
<ul>
<li id="phrase5">Ijen badaro tonalgoeyo (do jayurobge)</li>
<li id="phrase6">gomiro gumulchyoso mulgogi jaburo</li>
<li id="phrase7">Nanun nangman goyangi</li>
<li id="phrase8">sulphun doshirul bichwo chumchunun jagun byolbid</li>
</ul>
</div>
</body>
.CSS:
ul {
list-style-type:none;
margin:0;
padding:0;
}
li {
cursor:pointer;
display:block;
font-weight:bold;
color:#FFFFFF;
background-color:#889999;
width:120px;
text-align:center;
padding:4px;
text-decoration:none;
text-transform:uppercase;
}
li:hover {
background-color:#999988;
}
.nav {
float: left;
}
.content {
float: left;
width: 341px;
}
Javascript:
var videos = [];
videos[1] = "http://www.youtube.com/v/U6EcOiKWfZI&start=26&end=31";
videos[2] = "http://www.youtube.com/v/U6EcOiKWfZI&start=31&end=37";
videos[3] = "http://www.youtube.com/v/U6EcOiKWfZI&start=38&end=42";
videos[4] = "http://www.youtube.com/v/U6EcOiKWfZI&start=43&end=49";
videos[5] = "http://www.youtube.com/v/U6EcOiKWfZI&start=49&end=54";
videos[6] = "http://www.youtube.com/v/U6EcOiKWfZI&start=55&end=60";
videos[7] = "http://www.youtube.com/v/U6EcOiKWfZI&start=60&end=65";
videos[8] = "http://www.youtube.com/v/U6EcOiKWfZI&start=65&end=72";
var translations = [];
translations[1] = "In the dark night, My eyes become stars.";
translations[2] = "I won’t rob a fish market again.";
translations[3] = "My weeping days and days, I’m quite alone.";
translations[4] = "Now, I will go to the sea.";
translations[5] = "To catch fish using spider’s web.";
translations[6] = "I’m a romantic cat.";
translations[7] = "I’m a tiny star twinkling over the lonely city.";
translations[8] = "My deep and sad sea, it has gone away.";
function changePhrase3(clicked) {
var oldText = document.getElementById('text').innerHTML;
var newText = translations[clicked];
oldText = newText;
document.getElementById('player').src = videos[clicked];
}
document.getElementById('phrase1').click(changePhrase(1));
document.getElementById('phrase2').click(changePhrase(2));
document.getElementById('phrase3').click(changePhrase(3));
document.getElementById('phrase4').click(changePhrase(4));
document.getElementById('phrase5').click(changePhrase(5));
document.getElementById('phrase6').click(changePhrase(6));
document.getElementById('phrase7').click(changePhrase(7));
document.getElementById('phrase8').click(changePhrase(8));
只是一个错别字和无效的调用。
我刚刚修复了它。 请结帐小提琴
第一个重命名函数changePhrase3
为 changePhrase
(3 是拼写错误)。
其次,您应该像这样绑定单击功能。(不需要#
,请使用onclick
代替click
)
document.getElementById('phrase1').onclick = function(){ changePhrase(1) };
因为如果你像document.getElementById('phrase1').click(changePhrase(1));
一样绑定,意味着你把result of changePhrase(1)
发送到click
函数。 所以你必须在功能上扭曲它。
第三次修改changePhrase
像这样
function changePhrase(clicked){
var newText = translations[clicked]; // get new text
document.getElementById('text').innerHTML = newText; // assign to the old one
document.getElementById('player').src = videos[clicked];
}
一些小问题,
首先,正如 Patrick Evans 在评论中指出的那样,您的函数名称或函数调用中存在拼写错误。确保这些匹配。
其次,click()
是一个jQuery方法;你使用的是直接JS,所以你想使用"onclick":
http://www.w3schools.com/jsref/event_onclick.asp
最后,getElementById
不需要"#"符号。你在帖子的代码中已经有了这个,但在小提琴中没有。只需仔细检查一下您的实际代码中的情况。
总而言之,您应该为点击事件侦听器获得类似的东西:
document.getElementById('phrase1').onclick=function(){changePhrase3(1)};
将autoplay=1
添加到您的YouTube链接中,以便它们立即播放。
将一些 jQuery 函数click()
更改为普通的 javascript onclick
。
你不关心旧文本是什么,只关心容器是什么,以便你可以更新它,对吗? 这应该可以帮助您入门:
var txtContainer = document.getElementById('text');
var newText = translations[clicked];
txtContainer.innerHTML = newText;
document.getElementById('player').src = videos[clicked];
结果如下:http://jsfiddle.net/zyglobe/XaK7G/3/
Gomiro gumulchyoso mulgogi jaburo。
- 在对象上迭代以验证它是否's键存在于数组中
- 如何创建独立于数组更新的组件列表
- 仅当项目没有't存在于数组中
- 如何将函数应用于两个数组的第 n 个元素(数组的数组)
- 检查值存在于数组位置
- 如何检查值是否存在于数组的对象中
- Javascript强制数组的行为类似于数组
- 如何将子字符串应用于数组中的每个字母
- 检查元素是否存在于数组中,而不遍历它
- Mootools每个函数只适用于数组中的最后一个基金
- 如何将类应用于数组中段落标记中的所有单词
- 将隐藏应用于数组中的第一个元素
- 对对应于另一个数组的数组的值求和
- 将方法应用于数组中的单个元素-jquery/javascript
- 检查键存在于数组中
- 将逐位运算符应用于数组的值
- 检查变量是否存在于数组的数组中
- 使用javascript Push到数组,只要项目不存在于数组中
- 如何将自定义排序应用于数组
- Javascript- removeEventListener不应用于数组,从之前的addEventListener添加