javascript函数 - 正确的方法

时间:2010-02-02 14:42:47

标签: javascript

大家好,感谢您的光临,

执行此操作的正确方法是什么:

<script language="javascript">
function flag(nation)
{
this.nation=nation;
document.getElementById("flag").innerHTML="<img src='images/flags/'+nation+'.jpg'>";
}
</script>

在链接标签中显示:onClick =“flag(scotislands)”;图像名称为scotislands.jpg

非常感谢, 乙

5 个答案:

答案 0 :(得分:2)

在以下行中,您的字符串标识符已混淆:

document.getElementById("flag").innerHTML="<img src='images/flags/'+nation+'.jpg'>"; 

应该是:

document.getElementById("flag").innerHTML='<img src="images/flags/'+nation+'.jpg">'; 

修改
此外,正如Joel发现的那样,onClick="flag(scotislands)";应为onClick="flag('scotislands')";

答案 1 :(得分:0)

您需要引用链接标记中的文本,否则会尝试找不到名为scotislands的变量。

 onClick="flag('scotislands');"

然后将innerHTML的赋值更改为以下内容:

 document.getElementById("flag").innerHTML="<img src='images/flags/" + nation + ".jpg'>"

请注意在内部使用单引号来设置网址,但在每个内联文本位周围加上双引号。

但一般来说,我更喜欢不引人注目的东西(标记中没有代码)。使用jQuery之类的框架,我会做类似的事情:

 <a href="#scotislands" class="flag-identifier">Scotislands</a>

然后使用javascript,我会为所有这些链接添加一个处理程序:

 $(function() {
     $('a.flag-identifier').click( function() {
         var flag = $(this).attr('href').replace('#','');
         $('#flag').html( '<img src="images/flags/' + flag + '.jpg" />' );
         return false;
     });
 });

这将添加一个单击处理程序,该处理程序从锚点上的href获取标志名称,然后将命名元素flag的内容替换为通过将国家/地区名称添加到图像URL构建的图像。请注意,我省略了全局变量nation,但如果需要,您也可以在点击处理程序中轻松设置它。

答案 2 :(得分:0)

您正在设置innerHTML的字符串未正确引用。试试这个:

document.getElementById("flag").innerHTML="<img src='images/flags/'+nation+'.jpg'>";

此外,您的onClick正在尝试发送一个名为“scotislands”的不存在的对象。试试这个:

onClick="flag('scotislands');"

答案 3 :(得分:0)

function flag(nation) {
  var myFlag = document.getElementById("flag").getElementsByTagName("img")[0];
  myFlag.src = "images/flags/"+nation+".jpg";
}

答案 4 :(得分:0)

这取决于你所说的“正确”。我怀疑你使用innerHTML并不意味着“符合公认标准,例如DOM”,但这就是你从我那里得到的:

function flag(nation) {
    var flagEl = document.getElementById("flag");
    while (flagEl.firstChild) {
        flagEl.removeChild(flagEl.firstChild);
    }
    var img = document.createElement("img");
    img.src = "images/flags/" + nation + ".jpg";
    flagEl.appendChild(img);
}