Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一按钮上切换Javascript语言_Javascript - Fatal编程技术网

在同一按钮上切换Javascript语言

在同一按钮上切换Javascript语言,javascript,Javascript,我有这部分代码: JS: HTML: 其他语言 “单击我”按钮工作,并将“默认语言”切换为“其他语言”,但在初次单击后消失。我希望能够在同一个按钮上来回切换语言,但我只能添加另一个按钮。帮助?问题是您替换了整个内部HTML,即p标记的全部内容,包括按钮 您需要将要替换的内容放在子元素中,例如span: <p> <span id='lang'>some other language</span> <input type='text'

我有这部分代码:

JS:

HTML:

其他语言


“单击我”按钮工作,并将“默认语言”切换为“其他语言”,但在初次单击后消失。我希望能够在同一个按钮上来回切换语言,但我只能添加另一个按钮。帮助?

问题是您替换了整个内部HTML,即
p
标记的全部内容,包括按钮

您需要将要替换的内容放在子元素中,例如span:

<p> 
   <span id='lang'>some other language</span> 
   <input type='text' style="font-size: 12px;" onclick='changeText()' value='click me'/>
</p>

其他语言

您现在可以安全地替换span的内容,因为其中没有其他需要的HTML标记

您可以通过使用额外的JavaScript实现同样的效果,但更改标记可能是最简单、最清晰的解决方案


提示:将单击处理程序放入
onclick
属性被认为是错误的编码样式。()

它会消失,因为您的输入位于

中。
您需要从
p
中获取输入

<p id='lang'> some other language</p>
<input type='text' style="font-size: 12px;" onclick='changeText()' value='click me'/>

其他语言

另一件事:为什么要使用输入类型文本来完成按钮的工作?

因为
中,所以当您用新值替换innerHTML时,它也会被覆盖

中的一些其他语言仍然是一个节点,因此您可以使用
p.childNodes[0]
拾取它,然后将其节点值更改为新值。这不会影响现在的输入

如果你想切换文本,你必须包含在语言之间切换的逻辑

函数changeText()
{
var p=document.getElementById('lang');
var langList=['some other language','default language'];
//获取当前索引
var idx=p.dataset.lang;
idx=idx==null?0:parseInt(idx,10);
//切换到下一种语言
idx=(idx+1)%langList.length;
p、 dataset.lang=idx;
p、 childNodes[0]。nodeValue=langList[idx];
}

其他一些语言

Mkaaay,但它没有切换回默认语言?@Greedy添加了如何操作。也没有切换回默认语言?@Greedy抱歉?我不明白你的意思?我需要同样的按钮切换回默认文本,现在它不会消失,但我无法切换回原始文本(语言)要切换到默认语言,您应该声明两个字符串变量:lang1和lang2,然后单击onclick if innerHTML==lang1切换到lang2,反之亦然versa@Greedy如果你尝试一下,你自己就能弄明白。编程时不要让愚蠢的堆栈溢出用户代码
<p> 
   <span id='lang'>some other language</span> 
   <input type='text' style="font-size: 12px;" onclick='changeText()' value='click me'/>
</p>
<p id='lang'> some other language</p>
<input type='text' style="font-size: 12px;" onclick='changeText()' value='click me'/>